forked from bigbluebutton/bigbluebutton
-
Notifications
You must be signed in to change notification settings - Fork 3
/
.gitlab-ci.yml
190 lines (158 loc) · 4.74 KB
/
.gitlab-ci.yml
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
# set up stages
variables:
GIT_STRATEGY: fetch
stages:
- change detection
- get external dependencies
- build
- push packages
# define which docker image to use for builds
default:
image: gitlab.senfcall.de:5050/senfcall-public/docker-bbb-build:v2022-07-12
# This stage uses git to find out since when each package has been unmodified.
# it then checks an API endpoint on the package server to find out for which of
# these versions a build exists. If a viable build (from a commit where the
# package is identical) is found, that package name and .deb-filename are
# written to a file `packages_to_skip.txt` the root of the repo. This file is
# passed to the subsequent stages:
# - The jobs in the build stage check whether "their" package is listed in
# `packages_to_skip.txt` and don't build a new one if it is.
# - The bigbluebutton-build job includes the package versions listed in that
# file as version-pinned dependencies of the `bigbluebutton` package (instead
# of the current commit version)
# - The push_packages job sends the filenames of the packages that can be reused
# to the server, so they are included with the current branch. (Relevant for
# commits that start a new branch and don't change all packages)
change_detection:
stage: change detection
script: build/change_detection.sh
artifacts:
paths:
- packages_to_skip.txt
# replace placeholder files with actual external repos
# (for source and version of the package see the placeholder file)
# this step will be obsolete once dependencies can be tracked as
# git submodules
get_external_dependencies:
stage: get external dependencies
script: build/get_external_dependencies.sh
artifacts:
paths:
- bbb-etherpad
- bbb-webhooks
- bbb-webrtc-sfu
- freeswitch
- bbb-pads
- bbb-playback
expire_in: 1h 30min
# template job for build step
.build_job:
stage: build
artifacts:
paths:
- artifacts/*.deb
expire_in: 1h 30min
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- cache/.gradle
# jobs for all packages in the "build" stage (templated from above)
bbb-apps-akka-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-apps-akka
bbb-config-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-config
bbb-etherpad-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-etherpad
bbb-freeswitch-core-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-freeswitch-core
bbb-freeswitch-sounds-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-freeswitch-sounds
bbb-fsesl-akka-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-fsesl-akka
bbb-html5-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-html5
bbb-learning-dashboard:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-learning-dashboard
bbb-libreoffice-docker-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-libreoffice-docker
bbb-lti-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-lti
bbb-mkclean-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-mkclean
bbb-pads-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-pads
bbb-playback-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-playback
bbb-playback-notes-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-playback-notes
bbb-playback-podcast-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-playback-podcast
bbb-playback-presentation-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-playback-presentation
bbb-playback-screenshare-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-playback-screenshare
bbb-record-core-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-record-core
bbb-web-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-web
bbb-webhooks-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-webhooks
bbb-webrtc-sfu-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bbb-webrtc-sfu
bigbluebutton-build:
extends: .build_job
script:
- build/setup-inside-docker.sh bigbluebutton
# upload packages to repo server
push_packages:
stage: push packages
script: build/push_packages.sh
resource_group: push_packages
# uncomment the lines below if you want one final
# "artifacts" dir with all packages (increases runtime, fills up space on gitlab server)
#artifacts:
# paths:
# - artifacts/*
# expire_in: 2 days