@@ -19,6 +19,44 @@ random() {
19
19
hexdump -n ${1:- 4} -e ' /2 "%u"' /dev/urandom
20
20
}
21
21
22
+ # true if "$2" starts with "$1", false otherwise
23
+ startswith () {
24
+ case " ${2} " in
25
+ ${1} * ) true ;;
26
+ * ) false ;;
27
+ esac
28
+ }
29
+
30
+ # this function returns 0 when this is build is building one of the two merge
31
+ # queue branches ("staging" or "trying", 1 otherwise.
32
+ is_merge_queue_build () {
33
+ startswith " gh-readonly-queue/" " ${CI_BUILD_BRANCH} "
34
+ }
35
+
36
+ # this function gets CI_BASE_BRANCH and CI_BASE_COMMIT from the build branch name,
37
+ # when that looks like a Github merge_group build branch
38
+ handle_merge_queue_build () {
39
+ local repo_dir=" $1 "
40
+
41
+ if is_merge_queue_build; then
42
+ echo " --- this is a merge_group build, fetching info"
43
+ # Set CI_BASE_BRANCH in case of a merge queue build.
44
+ if test -z " ${CI_BASE_BRANCH} " ; then
45
+ base_branch=" $( echo ${CI_BUILD_BRANCH} | sed ' s_gh-readonly-queue/\(.*\)/.*_\1_' ) "
46
+ export CI_BASE_BRANCH=" ${base_branch} "
47
+ git -C " ${repo_dir} " fetch github " ${CI_BASE_BRANCH} " -f
48
+ fi
49
+
50
+ # Set CI_BASE_COMMIT in case of a merge queue build.
51
+ if test -z " ${CI_BASE_COMMIT} " ; then
52
+ previous_merge=" $( git -C ${repo_dir} merge-base ${CI_BASE_BRANCH} HEAD) "
53
+ export CI_BASE_COMMIT=" ${previous_merge} "
54
+ fi
55
+
56
+ echo " --- merge group base branch: ${CI_BASE_BRANCH} @${CI_BASE_COMMIT} "
57
+ fi
58
+ }
59
+
22
60
retry () {
23
61
local tries=$1
24
62
local delay=$2
@@ -158,7 +196,7 @@ main() {
158
196
159
197
export DWQ_ENV=" -E APPS -E BOARDS -E NIGHTLY -E STATIC_TESTS -E RUN_TESTS \
160
198
-E CI_MURDOCK_PROJECT -E ENABLE_TEST_CACHE -E CI_FAST_FAIL \
161
- -E FULL_BUILD -ECI_BUILD_BRANCH"
199
+ -E FULL_BUILD -ECI_BUILD_BRANCH -ECI_BASE_BRANCH -ECI_BASE_COMMIT "
162
200
163
201
local repo_dir=" RIOT"
164
202
if [ -n " ${CI_BUILD_COMMIT} " ]; then
@@ -178,6 +216,7 @@ main() {
178
216
179
217
if [ -n " ${CI_BUILD_BRANCH} " ]; then
180
218
echo " -- Building branch ${CI_BUILD_BRANCH} head: ${CI_BUILD_COMMIT} ..."
219
+ handle_merge_queue_build " ${repo_dir} "
181
220
elif [ -n " ${CI_BUILD_TAG} " ]; then
182
221
echo " -- Building tag ${CI_BUILD_TAG} (${CI_BUILD_COMMIT} )..."
183
222
else
@@ -213,9 +252,8 @@ main() {
213
252
214
253
echo " -- Building PR #${CI_PULL_NR} ${CI_PULL_URL} head: ${CI_PULL_COMMIT} ..."
215
254
216
- export DWQ_ENV=" ${DWQ_ENV} -E CI_BASE_REPO -E CI_BASE_BRANCH -E CI_PULL_REPO -E CI_PULL_COMMIT \
217
- -E CI_PULL_NR -E CI_PULL_URL -E CI_PULL_LABELS -E CI_MERGE_COMMIT \
218
- -E CI_BASE_COMMIT"
255
+ export DWQ_ENV=" ${DWQ_ENV} -E CI_BASE_REPO -E CI_PULL_REPO -E CI_PULL_COMMIT \
256
+ -E CI_PULL_NR -E CI_PULL_URL -E CI_PULL_LABELS -E CI_MERGE_COMMIT"
219
257
else # Invalid configuration, aborting
220
258
echo " Invalid job configuration, return with error"
221
259
exit 2
0 commit comments