Skip to content

Commit 02fde8f

Browse files
committed
Detect target branch and use appropriate repositories.
1 parent 3b37911 commit 02fde8f

File tree

1 file changed

+84
-43
lines changed

1 file changed

+84
-43
lines changed

.gitlab-ci.yml

Lines changed: 84 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,53 @@ variables:
55
stages:
66
- build_and_test
77

8+
.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
15+
- |
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";
20+
else
21+
ADACORE_CI_TARGET_BRANCH="master";
22+
fi;
23+
if [[ -n "$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" ]]; then
24+
ADACORE_CI_SOURCE_BRANCH="$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME";
25+
else
26+
ADACORE_CI_SOURCE_BRANCH="$CI_COMMIT_BRANCH";
27+
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"
31+
else
32+
ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX="";
33+
ADACORE_CI_ANOD_EDGE_QUALIFIER=""
34+
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.
47+
- |
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;
53+
fi
54+
anod vcs --sandbox-dir /it/wave --add-repo $ADACORE_CI_SUBPROJECT_NAME $ADACORE_CI_SUBPROJECTS_ROOT/$ADACORE_CI_SUBPROJECT_NAME
855
956
# Build and test with ANOD
1057
# TODO: add a build and test based on Alire in parallel to this.
@@ -22,54 +69,48 @@ build_and_test:
2269
script:
2370
- . ~/.aws_container_credentials
2471
- export PATH=/it/e3/bin:$PATH
72+
- !reference [.detect-branches]
2573

26-
# Check whether we're in an MR targeting 'edge' and setup some
27-
# variables if so.
28-
- TARGET_BRANCH="master"
29-
- if [ "x$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" = "xedge" ]; then
30-
echo "Targeting the edge branch." ;
31-
REPO_SUFFIX="-edge" ;
32-
BUILD_SPACE_SUFFIX="_edge" ;
33-
QUALIFIER="edge" ;
34-
TARGET_BRANCH="edge" ;
35-
fi
74+
- |
75+
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/spawn
76+
ADACORE_CI_SUBPROJECT_NAME=spawn
77+
- !reference [.checkout]
78+
79+
- |
80+
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/vss
81+
ADACORE_CI_SUBPROJECT_NAME=vss
82+
- !reference [.checkout]
3683

37-
# Setup the 'anod vcs' for this repo
38-
- cd /it/wave
39-
- anod vcs --add-repo ada_language_server${REPO_SUFFIX} $CI_PROJECT_DIR
84+
- |
85+
ADACORE_CI_SUBPROJECT_REPOSITORY_URL_PATH=/eng/ide/markdown
86+
ADACORE_CI_SUBPROJECT_NAME=markdown
87+
- !reference [.checkout]
4088

41-
# Figure out if we're on a sync branch
42-
- BRANCH=master
43-
- if [[ $CI_COMMIT_BRANCH =~ ^sync/ ]]; then
44-
BRANCH=$CI_COMMIT_BRANCH;
45-
elif [[ $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ ^sync/ ]]; then
46-
BRANCH=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME;
89+
- |
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]
93+
94+
- |
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]
98+
99+
- if [[ "$ADACORE_CI_TARGET_BRANCH" == "edge" ]]; then
100+
BUILD_SPACE_SUFFIX="_edge";
47101
fi
48102

49-
# Setup the 'anod vcs' for the other repos, if we're on
50-
# a "sync" branch.
51-
- for subproject in vss spawn gnatdoc ; do
52-
echo "for subproject $subproject ..." ;
53-
cd /tmp ;
54-
git clone $GIT_CLONE_BASE/eng/ide/$subproject ;
55-
cd $subproject ;
56-
if `git show-ref $BRANCH > /dev/null` ; then
57-
echo "... checking out $BRANCH"
58-
git checkout $BRANCH ;
59-
cd /it/wave ;
60-
anod vcs --add-repo $subproject /tmp/$subproject ;
61-
else
62-
echo "... checking out $TARGET_BRANCH"
63-
git checkout $TARGET_BRANCH ;
64-
fi ;
65-
done ;
66-
67-
# Build & test using anod
68-
- cd /it/wave
69-
- anod build als --qualifier=$QUALIFIER --minimal
70-
- anod test als --qualifier=$QUALIFIER --minimal
71-
72-
# Process the report
103+
- |
104+
# Setup the 'anod vcs' for this repo
105+
cd /it/wave
106+
anod vcs --add-repo ada_language_server$ADACORE_CI_SUBPROJECT_REPOSITORY_NAME_EDGE_SUFFIX $CI_PROJECT_DIR
107+
108+
# Build & test using anod
109+
cd /it/wave
110+
- anod build als $ADACORE_CI_ANOD_EDGE_QUALIFIER --minimal
111+
- anod test als $ADACORE_CI_ANOD_EDGE_QUALIFIER --minimal
112+
113+
# Process the report
73114
- e3-testsuite-report
74115
--failure-exit-code 1
75116
--xunit-output $CI_PROJECT_DIR/xunit_output.xml

0 commit comments

Comments
 (0)