-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
279 lines (255 loc) · 10 KB
/
Copy path.gitlab-ci.yml
File metadata and controls
279 lines (255 loc) · 10 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
stages:
- fetch-scripts
- images
- build
- test
- package
- release
include:
- project: 'devel/ciscripts'
file: '.fetch-job.yml'
- project: 'devel/ciscripts'
file: '.shared-vars.yml'
variables:
extends: .shared-variables
GIT_SUBMODULE_STRATEGY: recursive
GIT_DEPTH: 1
GIT_SUBMODULE_DEPTH: 1
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/gams_transfer_r/${CI_COMMIT_TAG}/"
MACHINES_CONTAINER_REG:
value: registry.gams.com/devel/machines
description: "URL to the container registry of the machines repository"
PF_CUSTOM_BRANCH:
value: "0"
description: "Name of custom branch, or X.Y.Z for published distribution, or 0 if version is specified in text file"
#============================================================================================================
fetch-ci-scripts:
only: [merge_requests, main, tags]
#============================================================================================================
image_linux:
stage: images
tags: [linux]
image:
name: docker:latest
services: [docker:dind]
variables:
DOCKER_TLS_CERTDIR: "/certs"
before_script:
- echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
script:
# --provenance=false: BuildKit's default build-attestation manifest isn't
# supported by this registry ("blob unknown to registry" on push otherwise)
- docker build --provenance=false -t linux/builder images/linux
- docker tag linux/builder registry.gams.com/devel/gams-transfer-r/linux/builder:latest
- docker push registry.gams.com/devel/gams-transfer-r/linux/builder:latest
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
changes:
- images/linux/Dockerfile
when: manual
allow_failure: true
image_windows:
stage: images
tags: [windows-shell]
script:
- docker build -t $CI_REGISTRY_IMAGE/windows/builder images/windows
- docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
- docker push $CI_REGISTRY_IMAGE/windows/builder
- docker logout $CI_REGISTRY
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
changes:
- images/windows/Dockerfile
when: manual
allow_failure: true
#============================================================================================================
build_r_linux_binary:
stage: build
tags: [linux]
needs: [fetch-ci-scripts]
image:
name: registry.gams.com/devel/gams-transfer-r/linux/builder
script:
- !reference [.get-gams]
- !reference [.gams-folder-leg]
- R CMD INSTALL gamstransfer --build
- mkdir binary
- mv gamstransfer_*.tar.gz binary/gamstransfer_r_linux.tar.gz
only: [merge_requests, main, tags]
artifacts:
name: gamstransfer_r_linux
paths: [binary]
expire_in: 1 day
build_r_source:
stage: build
tags: [linux]
needs: [fetch-ci-scripts]
image:
name: registry.gams.com/devel/gams-transfer-r/linux/builder
script:
- !reference [.get-gams]
- !reference [.gams-folder-leg]
- R CMD build gamstransfer
- mkdir source
- mv gamstransfer_*.tar.gz source/gamstransfer_r.tar.gz
only: [merge_requests, main, tags]
artifacts:
name: gamstransfer_r
paths: [source]
expire_in: 1 day
build_r_macos:
stage: build
tags: [macos]
needs: [fetch-ci-scripts]
script:
- !reference [.get-gams]
- !reference [.gams-folder-deg]
- mkdir -p $CI_PROJECT_DIR/myinstalldir
- R CMD INSTALL gamstransfer --build -l $CI_PROJECT_DIR/myinstalldir
- mv gamstransfer_*.tgz gamstransfer_r_macos.tgz
only: [merge_requests, main, tags]
artifacts:
name: gams_transfer_r_macos
paths: [gamstransfer_r_macos.tgz]
expire_in: 1 day
build_r_macos_arm64:
stage: build
tags: [macos-arm64]
needs: [fetch-ci-scripts]
script:
- !reference [.get-gams]
- !reference [.gams-folder-dac]
- mkdir -p $CI_PROJECT_DIR/myinstalldir
- R CMD INSTALL gamstransfer --build -l $CI_PROJECT_DIR/myinstalldir
- mv gamstransfer_*.tgz gamstransfer_r_macos_arm64.tgz
only: [merge_requests, main, tags]
artifacts:
name: gams_transfer_r_macos_arm64
paths: [gamstransfer_r_macos_arm64.tgz]
expire_in: 1 day
build_r_windows:
stage: build
tags: [windows]
needs: [fetch-ci-scripts]
image:
name: registry.gams.com/devel/gams-transfer-r/windows/builder
script:
- $env:PYTHONPATH = (Get-Location).Path + ";" + $env:PYTHONPATH
- !reference [.get-gams-wei]
- !reference [.gams-folder-wei]
- C:\R\bin\R.exe CMD INSTALL gamstransfer --configure-vars="LIB_DIR='C:'" --build
- mv gamstransfer_*.zip gamstransfer_r_windows.zip
only: [merge_requests, main, tags]
artifacts:
name: gams_transfer_r_windows
paths: [gamstransfer_r_windows.zip]
expire_in: 1 day
#============================================================================================================
test_r_linux:
stage: test
tags: [linux]
image:
name: registry.gams.com/devel/gams-transfer-r/linux/builder
script:
- !reference [.get-gams]
- !reference [.gams-folder-leg]
- PATH=/cache/gams-installs/`cat gams_folder_leg.txt`:$PATH
- echo $PATH
- cd source
- cp gamstransfer_r.tar.gz gamstransfer.tar.gz
- R CMD check gamstransfer.tar.gz --no-manual # run tests as part of check
- rm gamstransfer.tar.gz && cd ..
# test installation
- Rscript -e "install.packages('source/gamstransfer_r.tar.gz')"
needs: [fetch-ci-scripts,build_r_linux_binary,build_r_source]
only: [merge_requests, main, tags]
test_r_macos:
stage: test
tags: [macos]
script:
- !reference [.get-gams]
- !reference [.gams-folder-deg]
- PATH=$HOME/cache/gams-installs/`cat gams_folder_deg.txt`:$PATH
- DYLD_LIBRARY_PATH=$HOME/cache/gams-installs/`cat gams_folder_deg.txt`:$DYLD_LIBRARY_PATH
- echo $PATH
- R CMD build ./gamstransfer
- mv gamstransfer_*.tar.gz gamstransfer.tar.gz
- R CMD check gamstransfer.tar.gz --no-manual
needs: [fetch-ci-scripts,build_r_macos,build_r_source]
only: [merge_requests, main, tags]
test_r_macos_arm64:
stage: test
tags: [macos-arm64]
script:
- !reference [.get-gams]
- !reference [.gams-folder-dac]
- PATH=$HOME/cache/gams-installs/`cat gams_folder_dac.txt`:$PATH
- DYLD_LIBRARY_PATH=$HOME/cache/gams-installs/`cat gams_folder_dac.txt`:$DYLD_LIBRARY_PATH
- echo $PATH
- R CMD build ./gamstransfer
- mv gamstransfer_*.tar.gz gamstransfer.tar.gz
- R CMD check gamstransfer.tar.gz --no-manual
needs: [fetch-ci-scripts,build_r_macos_arm64,build_r_source]
only: [merge_requests, main, tags]
test_r_windows:
stage: test
tags: [windows]
needs: [fetch-ci-scripts,build_r_windows,build_r_source]
image:
name: registry.gams.com/devel/gams-transfer-r/windows/builder
script:
- $env:PYTHONPATH = (Get-Location).Path + ";" + $env:PYTHONPATH
- !reference [.get-gams-wei]
- !reference [.gams-folder-wei]
- $gmsdirname = Get-Content mygmsdir.tmp -Raw
- $GAMS_PATH = "C:\Cache\gams-installs\$gmsdirname"
- $env:Path = "$GAMS_PATH;$GAMS_PATH\gbin;" + $env:Path
- echo $env:PATH
- mv gamstransfer_r_windows.zip gamstransfer.zip
- C:\R\bin\Rscript.exe -e "install.packages('gamstransfer.zip', type='binary')"; $null
- C:\R\bin\Rscript.exe -e "testthat::test_dir('gamstransfer/tests')"; $null
only: [merge_requests, main, tags]
#============================================================================================================
package:
stage: package
tags: [linux]
image:
name: registry.gams.com/devel/gams-transfer-r/linux/builder
script:
- cd source
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file gamstransfer_r.tar.gz ${PACKAGE_REGISTRY_URL}
- cd ..
- cd binary
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file gamstransfer_r_linux.tar.gz ${PACKAGE_REGISTRY_URL}
- cd ..
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file gamstransfer_r_windows.zip ${PACKAGE_REGISTRY_URL}
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file gamstransfer_r_macos.tgz ${PACKAGE_REGISTRY_URL}
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file gamstransfer_r_macos_arm64.tgz ${PACKAGE_REGISTRY_URL}
only: [tags]
#============================================================================================================
release_job:
stage: release
tags: [linux]
image:
name: registry.gams.com/devel/gams-transfer-r/linux/builder
variables:
GLAB_ENABLE_CI_AUTOLOGIN: "true"
script:
- DESCR=$(grep -Pzo "(?s)GAMS Transfer R $CI_COMMIT_TAG.*?((?=\nGAMS Transfer R v)|$)" CHANGELOG | tr -d '\0')
- |
glab release create "$CI_COMMIT_TAG" \
--name "Release $CI_COMMIT_TAG" \
--notes "$DESCR" \
--assets-links "[
{\"name\":\"gamstransfer_r.tar.gz\",\"url\":\"${PACKAGE_REGISTRY_URL}gamstransfer_r.tar.gz\"},
{\"name\":\"gamstransfer_r_linux.tar.gz\",\"url\":\"${PACKAGE_REGISTRY_URL}gamstransfer_r_linux.tar.gz\"},
{\"name\":\"gamstransfer_r_windows.zip\",\"url\":\"${PACKAGE_REGISTRY_URL}gamstransfer_r_windows.zip\"},
{\"name\":\"gamstransfer_r_macos.tgz\",\"url\":\"${PACKAGE_REGISTRY_URL}gamstransfer_r_macos.tgz\"},
{\"name\":\"gamstransfer_r_macos_arm64.tgz\",\"url\":\"${PACKAGE_REGISTRY_URL}gamstransfer_r_macos_arm64.tgz\"}
]"
only: [tags]