22 name : alpine/git:v2.32.0
33 entrypoint : ["/bin/sh", "-c"]
44
5+ variables :
6+ ONEML_PATH : sertiscorp/mle/edge/oneml
7+ ONEML_REF : v3.9.0 # a tag or branch name to get oneML artifacts from
8+ ONEML_COMMIT_HASH : " " # needed only if ONEML_REF is not a tag
9+ BOOTCAMP_TAG : v0.10.0-rc.0 # set manually to the latest or new oneML-bootcamp tag
10+ RELEASE_BODY : " " # generated automatically
11+ PRERELEASE : " true" # set automatically
12+ BOOTCAMP_REF : develop # set automatically
13+
514stages :
615 - setup
16+ - release
717 - docker-base
818 - docker
919 - env-check
1020 - build
11- - release
21+ - pages
1222
1323# -------------- Scripts --------------
1424
@@ -50,18 +60,30 @@ stages:
5060
5161.base_ci : # Base CI
5262 rules :
53- - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event"'
63+ - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_MESSAGE =~ /Creating release/ '
5464 when : never
5565 - when : on_success
5666
67+ .base_artifacts : # Base CI for pulling artifacts
68+ stage : setup
69+ rules :
70+ - if : ' ($CI_COMMIT_TAG || $CI_COMMIT_MESSAGE =~ /Creating release/) && $CI_PIPELINE_SOURCE != "merge_request_event"'
71+ when : always
72+ - when : never
73+ script :
74+ - echo "Pulling from oneML..."
75+ artifacts :
76+ paths :
77+ - build/
78+
5779.base_docker : # Base CI for docker stage
5880 stage : docker-base
5981 image : docker:19.03.11-git
6082 variables :
6183 DOCKER_DRIVER : overlay2
6284 DOCKER_FILES : docker/Dockerfile
6385 rules :
64- - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event"'
86+ - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_MESSAGE =~ /Creating release/ '
6587 when : never
6688 - changes :
6789 - docker/Dockerfile
@@ -89,6 +111,10 @@ stages:
89111 extends : .base_ci
90112 stage : build
91113 image : $BUILD_IMAGE
114+ rules :
115+ - if : ' $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH =~ /^release\/+/ || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_MESSAGE =~ /Creating release/'
116+ when : never
117+ - when : on_success
92118 tags :
93119 - build
94120 needs :
@@ -104,9 +130,11 @@ stages:
104130.base_release : # Base CI for release stage
105131 stage : release
106132 rules :
107- - if : $CI_COMMIT_TAG
133+ - if : ' ( $CI_COMMIT_TAG || $CI_COMMIT_MESSAGE =~ /Creating release/) && $CI_PIPELINE_SOURCE != "merge_request_event" '
108134 when : on_success
109135 - when : never
136+ tags :
137+ - build
110138
111139# -------------- Jobs --------------
112140
@@ -137,6 +165,104 @@ mirror-pull:
137165 tags :
138166 - build
139167
168+ artifacts-pull-aarch64-linux-android :
169+ extends : .base_artifacts
170+ needs :
171+ - project : $ONEML_PATH
172+ job : build-bootcamp-aarch64-linux-android
173+ ref : $ONEML_REF
174+ artifacts : true
175+
176+ artifacts-pull-arm-linux-android :
177+ extends : .base_artifacts
178+ needs :
179+ - project : $ONEML_PATH
180+ job : build-bootcamp-arm-linux-android
181+ ref : $ONEML_REF
182+ artifacts : true
183+
184+ artifacts-pull-aarch64-linux-gnu :
185+ extends : .base_artifacts
186+ needs :
187+ - project : $ONEML_PATH
188+ job : build-bootcamp-aarch64-linux-gnu
189+ ref : $ONEML_REF
190+ artifacts : true
191+
192+ artifacts-pull-arm-linux-gnueabihf :
193+ extends : .base_artifacts
194+ needs :
195+ - project : $ONEML_PATH
196+ job : build-bootcamp-arm-linux-gnueabihf
197+ ref : $ONEML_REF
198+ artifacts : true
199+
200+ artifacts-pull-msvc-x64 :
201+ extends : .base_artifacts
202+ needs :
203+ - project : $ONEML_PATH
204+ job : build-bootcamp-msvc-x64
205+ ref : $ONEML_REF
206+ artifacts : true
207+
208+ artifacts-pull-x86_64 :
209+ extends : .base_artifacts
210+ needs :
211+ - project : $ONEML_PATH
212+ job : build-bootcamp-x86_64
213+ ref : $ONEML_REF
214+ artifacts : true
215+
216+ artifacts-pull-x86_64-cuda :
217+ extends : .base_artifacts
218+ needs :
219+ - project : $ONEML_PATH
220+ job : build-bootcamp-x86_64-cuda-tvm
221+ ref : $ONEML_REF
222+ artifacts : true
223+
224+ create-release :
225+ extends : .base_release
226+ before_script :
227+ - apk update && apk add curl jq
228+ script :
229+ - if [[ $ONEML_REF == v* ]]; then ONEML_POSTFIX=${ONEML_REF}; else ONEML_POSTFIX=${ONEML_COMMIT_HASH:0:7}; fi
230+ - >
231+ BINARIES="";
232+ BINARIES="${BINARIES} oneml-bootcamp-x86_64-$ONEML_POSTFIX.tar.gz";
233+ BINARIES="${BINARIES} oneml-bootcamp_tvm-x86_64-$ONEML_POSTFIX.tar.gz";
234+ BINARIES="${BINARIES} oneml-bootcamp-msvc-x64-$ONEML_POSTFIX.tar.gz";
235+ BINARIES="${BINARIES} oneml-bootcamp_android-aarch64-linux-android-$ONEML_POSTFIX.tar.gz";
236+ BINARIES="${BINARIES} oneml-bootcamp_android-arm-linux-android-$ONEML_POSTFIX.tar.gz";
237+ BINARIES="${BINARIES} oneml-bootcamp-aarch64-linux-gnu-$ONEML_POSTFIX.tar.gz";
238+ BINARIES="${BINARIES} oneml-bootcamp-arm-linux-gnueabihf-$ONEML_POSTFIX.tar.gz";
239+ export BINARIES=${BINARIES};
240+ LABELS="";
241+ LABELS="${LABELS} oneml-bootcamp-x86_64.tar.gz";
242+ LABELS="${LABELS} oneml-bootcamp-x86_64-cuda.tar.gz";
243+ LABELS="${LABELS} oneml-bootcamp-msvc-x64.tar.gz";
244+ LABELS="${LABELS} oneml-bootcamp-aarch64-linux-android.tar.gz";
245+ LABELS="${LABELS} oneml-bootcamp-arm-linux-android.tar.gz";
246+ LABELS="${LABELS} oneml-bootcamp-aarch64-linux-gnu.tar.gz";
247+ LABELS="${LABELS} oneml-bootcamp-arm-linux-gnueabihf.tar.gz";
248+ export LABELS=${LABELS};
249+ - >
250+ if [[ -n "$CI_COMMIT_TAG" ]]; then
251+ export RELEASE_BODY="$(sed '1,6d' CHANGELOG.md | awk -v n=2 '/## \[/{n--}; n > 0' | sed '$ d' | awk '{printf "%s\\n", $0}')";
252+ export PRERELEASE=false;
253+ export BOOTCAMP_REF=main;
254+ export BOOTCAMP_TAG=$CI_COMMIT_TAG;
255+ fi
256+ - sh .github/create_release.sh
257+ needs :
258+ - artifacts-pull-aarch64-linux-android
259+ - artifacts-pull-arm-linux-android
260+ - artifacts-pull-aarch64-linux-gnu
261+ - artifacts-pull-arm-linux-gnueabihf
262+ - artifacts-pull-msvc-x64
263+ - artifacts-pull-x86_64
264+ - artifacts-pull-x86_64-cuda
265+
140266docker-build-cpu-base :
141267 extends : .base_docker
142268 script :
@@ -155,7 +281,7 @@ docker-build-gpu-base:
155281 - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-gpu-base -f docker/Dockerfile --build-arg base_image=nvidia/cuda:11.5.1-cudnn8-runtime-ubuntu20.04 .
156282 - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-gpu-base
157283 rules :
158- - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event"'
284+ - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_MESSAGE =~ /Creating release/ '
159285 when : never
160286 - changes :
161287 - docker/Dockerfile
@@ -189,7 +315,7 @@ docker-build-gpu:
189315 IMAGE : $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-gpu-base
190316 DEVELOP_IMAGE : $CI_REGISTRY_IMAGE:develop-gpu-base
191317 rules :
192- - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event"'
318+ - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_MESSAGE =~ /Creating release/ '
193319 when : never
194320 - changes :
195321 - docker/Dockerfile.gpu
@@ -214,7 +340,7 @@ docker-build-android:
214340 IMAGE : $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-cpu-base
215341 DEVELOP_IMAGE : $CI_REGISTRY_IMAGE:develop-cpu-base
216342 rules :
217- - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event"'
343+ - if : ' $CI_COMMIT_BRANCH == "main" || $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_MESSAGE =~ /Creating release/ '
218344 when : never
219345 - changes :
220346 - docker/Dockerfile.android
@@ -340,6 +466,7 @@ build-csharp-x86_64-cuda:
340466update-github-pages :
341467 # NOTE: We publish the API doc to GitHub Pages by mirroring `gh-pages` branch from GitLab to GitHub.
342468 extends : .base_release
469+ stage : pages
343470 variables :
344471 TARGET_ARCH : x86_64
345472 script :
@@ -372,4 +499,8 @@ update-github-pages:
372499 git push origin gh-pages;
373500 else
374501 echo "Not found any changes API in docs. Skipped";
375- fi
502+ fi
503+ rules :
504+ - if : ' $CI_COMMIT_TAG && $CI_PIPELINE_SOURCE != "merge_request_event"'
505+ when : on_success
506+ - when : never
0 commit comments