Skip to content

Commit ed46783

Browse files
committed
More experimental work on dynamic gitlab runners using SQS and Auto-Scaling
1 parent 03997b8 commit ed46783

File tree

1 file changed

+30
-34
lines changed

1 file changed

+30
-34
lines changed

.gitlab-ci.yml

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,42 @@
11
stages:
22
- init-builders
33
- build-libopenshot-audio
4+
- cleanup-builders
45
- trigger-libopenshot
56

67
variables:
78
GIT_LOG_FORMAT: "- %h %ad %s [%aN]"
89

9-
init_linux_builder:
10+
# INIT BUILDERS: Add to both queues in one job
11+
init_builders:
1012
stage: init-builders
11-
tags:
12-
- gitlab-server
13+
except:
14+
- tags
15+
tags: [gitlab-server]
1316
script:
1417
- send-ci-sqs linux
15-
16-
init_windows_builder:
17-
stage: init-builders
18-
tags:
19-
- gitlab-server
20-
script:
2118
- send-ci-sqs windows
2219

20+
# BUILD STAGE: All build jobs depend on init_builders
2321
linux-builder:
2422
stage: build-libopenshot-audio
25-
needs: [init_linux_builder]
2623
artifacts:
2724
expire_in: 6 months
2825
paths:
2926
- build/install-x64/*
3027
script:
31-
- mkdir -p build; cd build;
28+
- mkdir -p build
29+
- cd build
3230
- cmake -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -D"CMAKE_INSTALL_PREFIX:PATH=install-x64" -D"CMAKE_BUILD_TYPE:STRING=Release" ../
3331
- make -j 2
3432
- make install
3533
- PROJECT_VERSION=$(grep -E '^set\(PROJECT_VERSION_FULL "(.*)' ../CMakeLists.txt | awk '{print $2}' | tr -d '")')
3634
- PROJECT_SO=$(grep -E '^set\(PROJECT_SO_VERSION (.*)' ../CMakeLists.txt | awk '{print $2}' | tr -d ')')
3735
- echo -e "CI_PROJECT_NAME:$CI_PROJECT_NAME\nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME\nCI_COMMIT_SHA:$CI_COMMIT_SHA\nCI_JOB_ID:$CI_JOB_ID\nCI_PIPELINE_ID:$CI_PIPELINE_ID\nVERSION:$PROJECT_VERSION\nSO:$PROJECT_SO" > "install-x64/share/$CI_PROJECT_NAME.env"
3836
- git log $(git describe --tags --abbrev=0 @^)..@ --oneline --pretty=format:"- %C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "install-x64/share/$CI_PROJECT_NAME.log"
39-
after_script:
40-
- if [ "$CI" = "true" ]; then sudo shutdown -h now; fi
41-
when: on_success
4237
except:
43-
- tags
44-
tags:
45-
- linux-focal
38+
- tags
39+
tags: [linux-focal]
4640

4741
mac-builder:
4842
stage: build-libopenshot-audio
@@ -59,15 +53,12 @@ mac-builder:
5953
- PROJECT_SO=$(grep -E '^set\(PROJECT_SO_VERSION (.*)' CMakeLists.txt | awk '{print $2}' | tr -d ')')
6054
- echo -e "CI_PROJECT_NAME:$CI_PROJECT_NAME\nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME\nCI_COMMIT_SHA:$CI_COMMIT_SHA\nCI_JOB_ID:$CI_JOB_ID\nCI_PIPELINE_ID:$CI_PIPELINE_ID\nVERSION:$PROJECT_VERSION\nSO:$PROJECT_SO" > "build/install-x64/share/$CI_PROJECT_NAME.env"
6155
- git log $(git describe --tags --abbrev=0 @^)..@ --oneline --pretty=format:"- %C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log"
62-
when: always
6356
except:
64-
- tags
65-
tags:
66-
- mac
57+
- tags
58+
tags: [mac]
6759

6860
windows-builder-x64:
6961
stage: build-libopenshot-audio
70-
needs: [init_windows_builder]
7162
artifacts:
7263
expire_in: 6 months
7364
paths:
@@ -84,17 +75,12 @@ windows-builder-x64:
8475
- New-Item -path "build/install-x64/share/" -Name "$CI_PROJECT_NAME.env" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID`nCI_PIPELINE_ID:$CI_PIPELINE_ID`nVERSION:$PROJECT_VERSION`nSO:$PROJECT_SO" -ItemType file -force
8576
- $PREV_GIT_LABEL=(git describe --tags --abbrev=0 '@^')
8677
- git log "$PREV_GIT_LABEL..@" --oneline --pretty=format:"- %C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x64/share/$CI_PROJECT_NAME.log"
87-
after_script:
88-
- if ($env:CI -eq "true") { shutdown /s /t 0 }
89-
when: on_success
9078
except:
91-
- tags
92-
tags:
93-
- windows
79+
- tags
80+
tags: [windows]
9481

9582
windows-builder-x86:
9683
stage: build-libopenshot-audio
97-
needs: [init_windows_builder]
9884
artifacts:
9985
expire_in: 6 months
10086
paths:
@@ -111,14 +97,25 @@ windows-builder-x86:
11197
- New-Item -path "build/install-x86/share/" -Name "$CI_PROJECT_NAME.env" -Value "CI_PROJECT_NAME:$CI_PROJECT_NAME`nCI_COMMIT_REF_NAME:$CI_COMMIT_REF_NAME`nCI_COMMIT_SHA:$CI_COMMIT_SHA`nCI_JOB_ID:$CI_JOB_ID`nCI_PIPELINE_ID:$CI_PIPELINE_ID`nVERSION:$PROJECT_VERSION`nSO:$PROJECT_SO" -ItemType file -force
11298
- $PREV_GIT_LABEL=(git describe --tags --abbrev=0 '@^')
11399
- git log "$PREV_GIT_LABEL..@" --oneline --pretty=format:"- %C(auto,yellow)%h%C(auto,magenta)% %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(25,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D" --date=short > "build/install-x86/share/$CI_PROJECT_NAME.log"
114-
after_script:
115-
- if ($env:CI -eq "true") { shutdown /s /t 0 }
116-
when: on_success
117100
except:
118101
- tags
119102
tags:
120103
- windows
121104

105+
# CLEANUP: Always run, removes both messages, then sleeps
106+
cleanup_builders:
107+
stage: cleanup-builders
108+
except:
109+
- tags
110+
tags: [gitlab-server]
111+
script:
112+
- receive-ci-sqs linux
113+
- receive-ci-sqs windows
114+
- echo "Pausing for ASG to scale-down..."
115+
- sleep 60
116+
when: always
117+
118+
# TRIGGER: Only runs if all previous succeeded
122119
trigger-pipeline:
123120
stage: trigger-libopenshot
124121
script:
@@ -127,5 +124,4 @@ trigger-pipeline:
127124
dependencies: []
128125
except:
129126
- tags
130-
tags:
131-
- linux
127+
tags: [gitlab-server]

0 commit comments

Comments
 (0)