@@ -6,52 +6,68 @@ stages:
6
6
- build_and_test
7
7
8
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
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
15
17
- |
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 ";
20
22
else
21
- ADACORE_CI_TARGET_BRANCH="master ";
23
+ ACI_SOURCE_BRANCH="$CI_COMMIT_BRANCH ";
22
24
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";
25
31
else
26
- ADACORE_CI_SOURCE_BRANCH="$CI_COMMIT_BRANCH ";
32
+ ACI_TARGET_BRANCH="master ";
27
33
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"
31
37
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;
34
54
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.
47
63
- |
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 ;
53
69
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
55
71
56
72
# Build and test with ANOD
57
73
# TODO: add a build and test based on Alire in parallel to this.
@@ -72,43 +88,43 @@ build_and_test:
72
88
- !reference [.detect-branches]
73
89
74
90
- |
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 ]
78
94
79
95
- |
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 ]
83
99
84
100
- |
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 ]
88
104
89
105
- |
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 ]
93
109
94
110
- |
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 ]
98
114
99
- - if [[ "$ADACORE_CI_TARGET_BRANCH " == "edge" ]]; then
115
+ - if [[ "$ACI_TARGET_BRANCH " == "edge" ]]; then
100
116
BUILD_SPACE_SUFFIX="_edge";
101
117
fi
102
118
103
119
- |
104
120
# Setup the 'anod vcs' for this repo
105
121
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
107
123
108
124
# Build & test using anod
109
125
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
112
128
113
129
# Process the report
114
130
- e3-testsuite-report
0 commit comments