Skip to content

Commit 3d14370

Browse files
committed
Update detection script to support downstreams.
Replace ADACORE_CI_ prefix by ACI_.
1 parent 02fde8f commit 3d14370

File tree

1 file changed

+72
-56
lines changed

1 file changed

+72
-56
lines changed

.gitlab-ci.yml

Lines changed: 72 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,52 +6,68 @@ stages:
66
- build_and_test
77

88
.detect-branches:
9-
# Detects source and target branches.
10-
# ADACORE_CI_SOURCE_BRANCH is set to source branch (merge request, pull)
11-
# ADACORE_CI_TARGET_BRANCH is set to target branch of merge request, or 'master'/'edge' for pull
12-
# ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX is set to '-edge' when target repository is 'edge'
13-
# ADACORE_CI_ANOD_EDGE_QUALIFIER is set to '--qualifier=edge' when target repository is 'edge'
14-
# ADACORE_CI_SUBPROJECTS_ROOT is set to '/tmp' and may be overritten by script
9+
# Version 1.
10+
# Detects source and target branches. Checkout necessary branch for
11+
# repository when run downstream pipeline is detected.
12+
# ACI_SOURCE_BRANCH is set to source branch (merge request, pull)
13+
# ACI_TARGET_BRANCH is set to target branch of merge request, or 'master'/'edge' for pull
14+
# ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX is set to '-edge' when target repository is 'edge'
15+
# ACI_ANOD_QUALIFIER is set to 'edge' when target repository is 'edge'
16+
# ACI_SUBPROJECTS_ROOT is set to '/tmp' and may be overritten by script
1517
- |
16-
if [[ -n "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]]; then
17-
ADACORE_CI_TARGET_BRANCH="$CI_MERGE_REQUEST_TARGET_BRANCH_NAME";
18-
elif [[ "x$CI_COMMIT_BRANCH" == "xedge" ]]; then
19-
ADACORE_CI_TARGET_BRANCH="edge";
18+
if [[ -n "$ACI_UPSTREAM_SOURCE_BRANCH" ]]; then
19+
ACI_SOURCE_BRANCH="$ACI_UPSTREAM_SOURCE_BRANCH";
20+
elif [[ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]]; then
21+
ACI_SOURCE_BRANCH="$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME";
2022
else
21-
ADACORE_CI_TARGET_BRANCH="master";
23+
ACI_SOURCE_BRANCH="$CI_COMMIT_BRANCH";
2224
fi;
23-
if [[ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]]; then
24-
ADACORE_CI_SOURCE_BRANCH="$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME";
25+
if [[ -n "$ACI_UPSTREAM_TARGET_BRANCH" ]]; then
26+
ACI_TARGET_BRANCH=$ACI_UPSTREAM_TARGET_BRANCH;
27+
elif [[ -n "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]]; then
28+
ACI_TARGET_BRANCH="$CI_MERGE_REQUEST_TARGET_BRANCH_NAME";
29+
elif [[ "x$CI_COMMIT_BRANCH" == "xedge" ]]; then
30+
ACI_TARGET_BRANCH="edge";
2531
else
26-
ADACORE_CI_SOURCE_BRANCH="$CI_COMMIT_BRANCH";
32+
ACI_TARGET_BRANCH="master";
2733
fi;
28-
if [[ "$ADACORE_CI_TARGET_BRANCH" == "edge" ]]; then
29-
ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX="-edge";
30-
ADACORE_CI_ANOD_EDGE_QUALIFIER="--qualifier=edge"
34+
if [[ "$ACI_TARGET_BRANCH" == "edge" ]]; then
35+
ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX="-edge";
36+
ACI_ANOD_QUALIFIER="edge"
3137
else
32-
ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX="";
33-
ADACORE_CI_ANOD_EDGE_QUALIFIER=""
38+
ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX="";
39+
ACI_ANOD_QUALIFIER=""
40+
fi
41+
ACI_SUBPROJECTS_ROOT=/tmp
42+
echo "Source branch: $ACI_SOURCE_BRANCH"
43+
echo "Target branch: $ACI_TARGET_BRANCH"
44+
echo "Name suffix: $ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX"
45+
echo "Qualifier: $ACI_ANOD_QUALIFIER"
46+
echo "Subprojects: $ACI_SUBPROJECTS_ROOT"
47+
48+
# On downstream pipeline checkout the necessary branch
49+
- if [[ "$CI_PIPELINE_SOURCE" == 'pipeline' ]]; then
50+
if `git -C $CI_PROJECT_DIR show-ref $ACI_SOURCE_BRANCH > /dev/null`; then
51+
git -C $CI_PROJECT_DIR checkout $ACI_SOURCE_BRANCH;
52+
elif `git -C $CI_PROJECT_DIR show-ref $ACI_TARGET_BRANCH > /dev/null`; then
53+
git -C $CI_PROJECT_DIR checkout $ACI_TARGET_BRANCH;
3454
fi
35-
ADACORE_CI_SUBPROJECTS_ROOT=/tmp
36-
echo "Source branch: $ADACORE_CI_SOURCE_BRANCH"
37-
echo "Target branch: $ADACORE_CI_TARGET_BRANCH"
38-
echo "Name suffix: $ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX"
39-
echo "Qualifier: $ADACORE_CI_ANOD_EDGE_QUALIFIER"
40-
echo "Subprojects: $ADACORE_CI_SUBPROJECTS_ROOT"
41-
42-
.checkout:
43-
# Variables:
44-
# ADACODE_CI_SUBPROJECTS_ROOT - root directory to checkout repositories.
45-
# ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH - path component of the repository's URL.
46-
# ADACORE_CI_SUBPROJECT_NAME - name of the directory for subproject.
55+
fi
56+
57+
.checkout-subproject:
58+
# Version 1.
59+
# Input variables:
60+
# ACI_SUBPROJECTS_ROOT - root directory to checkout repositories.
61+
# ACI_SUBPROJECT_REPOSITORY_URL_PATH - path component of the repository's URL.
62+
# ACI_SUBPROJECT_NAME - name of the directory for subproject.
4763
- |
48-
git -C $ADACORE_CI_SUBPROJECTS_ROOT clone $GIT_CLONE_BASE/$ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH $ADACORE_CI_SUBPROJECT_NAME
49-
if `git -C $ADACORE_CI_SUBPROJECTS_ROOT -C $ADACORE_CI_SUBPROJECT_NAME show-ref $ADACORE_CI_SOURCE_BRANCH > /dev/null`; then
50-
git -C $ADACORE_CI_SUBPROJECTS_ROOT -C $ADACORE_CI_SUBPROJECT_NAME checkout $ADACORE_CI_SOURCE_BRANCH;
51-
elif `git -C $ADACORE_CI_SUBPROJECTS_ROOT -C $ADACORE_CI_SUBPROJECT_NAME show-ref $ADACORE_CI_TARGET_BRANCH > /dev/null`; then
52-
git -C $ADACORE_CI_SUBPROJECTS_ROOT -C $ADACORE_CI_SUBPROJECT_NAME checkout $ADACORE_CI_TARGET_BRANCH;
64+
git -C $ACI_SUBPROJECTS_ROOT clone $GIT_CLONE_BASE/$ACI_SUBPROJECT_REPOSITORY_URL_PATH $ACI_SUBPROJECT_NAME
65+
if `git -C $ACI_SUBPROJECTS_ROOT -C $ACI_SUBPROJECT_NAME show-ref $ACI_SOURCE_BRANCH > /dev/null`; then
66+
git -C $ACI_SUBPROJECTS_ROOT -C $ACI_SUBPROJECT_NAME checkout $ACI_SOURCE_BRANCH;
67+
elif `git -C $ACI_SUBPROJECTS_ROOT -C $ACI_SUBPROJECT_NAME show-ref $ACI_TARGET_BRANCH > /dev/null`; then
68+
git -C $ACI_SUBPROJECTS_ROOT -C $ACI_SUBPROJECT_NAME checkout $ACI_TARGET_BRANCH;
5369
fi
54-
anod vcs --sandbox-dir /it/wave --add-repo $ADACORE_CI_SUBPROJECT_NAME $ADACORE_CI_SUBPROJECTS_ROOT/$ADACORE_CI_SUBPROJECT_NAME
70+
anod vcs --sandbox-dir /it/wave --add-repo $ACI_SUBPROJECT_NAME $ACI_SUBPROJECTS_ROOT/$ACI_SUBPROJECT_NAME
5571
5672
# Build and test with ANOD
5773
# TODO: add a build and test based on Alire in parallel to this.
@@ -72,43 +88,43 @@ build_and_test:
7288
- !reference [.detect-branches]
7389

7490
- |
75-
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/spawn
76-
ADACORE_CI_SUBPROJECT_NAME=spawn
77-
- !reference [.checkout]
91+
ACI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/spawn
92+
ACI_SUBPROJECT_NAME=spawn
93+
- !reference [.checkout-subproject]
7894

7995
- |
80-
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/vss
81-
ADACORE_CI_SUBPROJECT_NAME=vss
82-
- !reference [.checkout]
96+
ACI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/vss
97+
ACI_SUBPROJECT_NAME=vss
98+
- !reference [.checkout-subproject]
8399

84100
- |
85-
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/markdown
86-
ADACORE_CI_SUBPROJECT_NAME=markdown
87-
- !reference [.checkout]
101+
ACI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/markdown
102+
ACI_SUBPROJECT_NAME=markdown
103+
- !reference [.checkout-subproject]
88104

89105
- |
90-
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/gnatdoc
91-
ADACORE_CI_SUBPROJECT_NAME=gnatdoc$ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX
92-
- !reference [.checkout]
106+
ACI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/gnatdoc
107+
ACI_SUBPROJECT_NAME=gnatdoc$ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX
108+
- !reference [.checkout-subproject]
93109

94110
- |
95-
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/gnatstudio-internal
96-
ADACORE_CI_SUBPROJECT_NAME=gnatstudio-internal$ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX
97-
- !reference [.checkout]
111+
ACI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/gnatstudio-internal
112+
ACI_SUBPROJECT_NAME=gnatstudio-internal$ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX
113+
- !reference [.checkout-subproject]
98114

99-
- if [[ "$ADACORE_CI_TARGET_BRANCH" == "edge" ]]; then
115+
- if [[ "$ACI_TARGET_BRANCH" == "edge" ]]; then
100116
BUILD_SPACE_SUFFIX="_edge";
101117
fi
102118

103119
- |
104120
# Setup the 'anod vcs' for this repo
105121
cd /it/wave
106-
anod vcs --add-repo ada_language_server$ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX $CI_PROJECT_DIR
122+
anod vcs --add-repo ada_language_server$ACI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX $CI_PROJECT_DIR
107123
108124
# Build & test using anod
109125
cd /it/wave
110-
- anod build als $ADACORE_CI_ANOD_EDGE_QUALIFIER --minimal
111-
- anod test als $ADACORE_CI_ANOD_EDGE_QUALIFIER --minimal
126+
- anod build als --qualifier=$ACI_ANOD_QUALIFIER --minimal
127+
- anod test als --qualifier=$ACI_ANOD_QUALIFIER --minimal
112128

113129
# Process the report
114130
- e3-testsuite-report

0 commit comments

Comments
 (0)