@@ -5,6 +5,53 @@ variables:
5
5
stages :
6
6
- build_and_test
7
7
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
8
55
9
56
# Build and test with ANOD
10
57
# TODO: add a build and test based on Alire in parallel to this.
@@ -22,54 +69,48 @@ build_and_test:
22
69
script :
23
70
- . ~/.aws_container_credentials
24
71
- export PATH=/it/e3/bin:$PATH
72
+ - !reference [.detect-branches]
25
73
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]
36
83
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]
40
88
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";
47
101
fi
48
102
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
73
114
- e3-testsuite-report
74
115
--failure-exit-code 1
75
116
--xunit-output $CI_PROJECT_DIR/xunit_output.xml
0 commit comments