Skip to content

Commit f0aae16

Browse files
authored
Merge pull request #49 from kaspar030/add_merge_group_support
add merge group CI_BASE_BRANCH/COMMIT extraction
2 parents 9c5d6e8 + 8855e57 commit f0aae16

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

build.sh

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,44 @@ random() {
1919
hexdump -n ${1:-4} -e '/2 "%u"' /dev/urandom
2020
}
2121

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+
2260
retry() {
2361
local tries=$1
2462
local delay=$2
@@ -158,7 +196,7 @@ main() {
158196

159197
export DWQ_ENV="-E APPS -E BOARDS -E NIGHTLY -E STATIC_TESTS -E RUN_TESTS \
160198
-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"
162200

163201
local repo_dir="RIOT"
164202
if [ -n "${CI_BUILD_COMMIT}" ]; then
@@ -178,6 +216,7 @@ main() {
178216

179217
if [ -n "${CI_BUILD_BRANCH}" ]; then
180218
echo "-- Building branch ${CI_BUILD_BRANCH} head: ${CI_BUILD_COMMIT}..."
219+
handle_merge_queue_build "${repo_dir}"
181220
elif [ -n "${CI_BUILD_TAG}" ]; then
182221
echo "-- Building tag ${CI_BUILD_TAG} (${CI_BUILD_COMMIT})..."
183222
else
@@ -213,9 +252,8 @@ main() {
213252

214253
echo "-- Building PR #${CI_PULL_NR} ${CI_PULL_URL} head: ${CI_PULL_COMMIT}..."
215254

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"
219257
else # Invalid configuration, aborting
220258
echo "Invalid job configuration, return with error"
221259
exit 2

0 commit comments

Comments
 (0)