@@ -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