@@ -12,6 +12,8 @@ phases:
1212
1313 - echo $CODEBUILD_RESOLVED_SOURCE_VERSION
1414 - echo $CODEBUILD_SOURCE_REPO_URL
15+ - org_name=$(echo $CODEBUILD_SOURCE_REPO_URL | awk '{split($0,org,"/"); print org[4]}')
16+ - echo $org_name
1517 - echo $CODEBUILD_SOURCE_VERSION
1618
1719 - echo $CODEBUILD_WEBHOOK_MERGE_COMMIT
@@ -22,7 +24,11 @@ phases:
2224 - echo $CODEBUILD_WEBHOOK_TRIGGER
2325 - echo $CODEBUILD_WEBHOOK_BASE_REF
2426
25- - if [ "$CODEBUILD_WEBHOOK_EVENT" = "PULL_REQUEST_MERGED" ];
27+ # Codebuild only runs on PUSH events if HEAD_REF
28+ # is refs/heads/develop (merge to develop). In this
29+ # case CODEBUILD_GIT_BRANCH="develop"
30+
31+ - if [ "$CODEBUILD_WEBHOOK_EVENT" = "PUSH" ];
2632 then export CODEBUILD_GIT_BRANCH="develop";
2733 echo "Merging to develop";
2834 else export CODEBUILD_GIT_BRANCH=${CODEBUILD_WEBHOOK_HEAD_REF#refs/heads/};
@@ -31,102 +37,108 @@ phases:
3137 - echo "CODEBUILD_GIT_BRANCH=${CODEBUILD_GIT_BRANCH}"
3238 - echo "CODEBUILD_SOURCE_VERSION=${CODEBUILD_SOURCE_VERSION}"
3339
34- - echo MPI setup for Docker
35- - mkdir -p /var/run/sshd
36- - ssh-keygen -A
37- - sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
38- - sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/g' /etc/ssh/sshd_config
39- - sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
40-
41- - groupadd jcsda -g 9999
42- - useradd jcsdauser
43- - mkdir -p /jcsda /build_container
44- - chown -R jcsdauser:jcsda /build_container /usr/local
45- - chmod 6755 /jcsda /build_container /usr/local
46-
47- - mkdir /jcsda/.ssh ; echo "StrictHostKeyChecking no" > /jcsda/.ssh/config
48- - mkdir -p /jcsda/.openmpi
49- - mkdir -p /jcsda/oops-bundle
50- - mkdir -p /home/jcsdauser/.openmpi
51-
52- - cp CI/default-mca-params.conf /home/jcsdauser/.openmpi/mca-params.conf
53- - cat /home/jcsdauser/.openmpi/mca-params.conf
54- - chown -R jcsdauser:jcsda /jcsda/
55-
56- - su - jcsdauser -c "ssh-keygen -f /jcsda/.ssh/id_rsa -t rsa -N ''
57- && chmod 600 /jcsda/.ssh/config
58- && chmod 700 /jcsda/.ssh
59- && cp /jcsda/.ssh/id_rsa.pub /jcsda/.ssh/authorized_keys
60- && echo MPI setup for Docker done"
61-
6240 pre_build :
6341 commands :
6442 - echo Executing pre_build phase
43+ - mkdir -p /jcsda/oops-bundle
6544
6645 - git lfs install
67- - cp ~/.gitconfig /home/jcsdauser/
68- - cp CI/CMakeLists.txt /jcsda/oops-bundle
69-
46+ - cp ~/.gitconfig /home/jedi/
7047 - cd CI
71-
48+
7249 - if [ "$CODEBUILD_GIT_BRANCH" = "develop" ];
7350 then export CODEBUILD_GIT_BRANCH_FORK="release-stable";
7451 else export CODEBUILD_GIT_BRANCH_FORK=${CODEBUILD_GIT_BRANCH};
7552 echo "CODEBUILD_GIT_BRANCH_FORK=${CODEBUILD_GIT_BRANCH_FORK}";
7653 fi
7754
55+ # Upload branch name and commit sha as CodeBuild artifact to S3
56+ - mkdir /jcsda/artifacts
57+ - echo ${CODEBUILD_GIT_BRANCH} > /jcsda/artifacts/branch_name.txt
58+ - echo ${CODEBUILD_RESOLVED_SOURCE_VERSION} > /jcsda/artifacts/commit_sha.txt
59+
7860 # oops
79- - ./clone.sh $GIT_USER $GIT_PASS jcsda/oops $CODEBUILD_GIT_BRANCH oops /jcsda/oops-bundle develop
80- # fckit
81- - ./clone.sh $GIT_USER $GIT_PASS jcsda-internal/fckit $CODEBUILD_GIT_BRANCH_FORK fckit /jcsda/oops-bundle release-stable
82- # atlas
83- - ./clone.sh $GIT_USER $GIT_PASS jcsda-internal/atlas $CODEBUILD_GIT_BRANCH_FORK atlas /jcsda/oops-bundle release-stable
61+ - ./clone.sh $GIT_USER $GIT_PASS jcsda-internal/oops $CODEBUILD_GIT_BRANCH oops /jcsda/oops-bundle develop
62+
63+ # move CMakeLists.txt from oops/CI to bundle directory
64+ - cp CMakeLists.txt /jcsda/oops-bundle/CMakeLists.txt
65+
66+ # cdash upload setup
67+ - mkdir /jcsda/oops-bundle/cmake
68+ - cp cmake/CTestCustom.ctest.in /jcsda/oops-bundle/cmake/
69+ - cp cmake/cdash-integration.cmake /jcsda/oops-bundle/cmake/
70+ - cp cmake/CTestConfig.cmake /jcsda/oops-bundle/
8471
85- - cd /jcsda/oops-bundle
86- - ls
87-
8872 build :
73+ on-failure : CONTINUE
8974 commands :
9075 - echo Executing build phase
91- - su - jcsdauser -c "cd /build_container
76+ - export BUILD_STATUS="0"
77+ - echo $BUILD_STATUS
78+ - echo $CODEBUILD_BUILD_SUCCEEDING
79+
80+ # configure and build
81+ - su - jedi -c "cd /home/jedi
9282 && ls
9383 && export FC=mpifort
9484 && export CC=mpicc
9585 && export CXX=mpicxx
96- && cmake -DCMAKE_MODULE_PATH=/usr/local/share/ecbuild/cmake/ -DCMAKE_BUILD_TYPE=Debug -DENABLE_GPROF=ON -DCMAKE_CXX_COMPILER=$(which g++) -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_Fortran_COMPILER=$(which gfortran) /jcsda/oops-bundle/
97- && cd oops
98- && make -j4"
86+ && ecbuild -Wno-dev -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCDASH_OVERRIDE_GIT_BRANCH=$CODEBUILD_GIT_BRANCH -DCTEST_UPDATE_VERSION_ONLY=FALSE -DENABLE_GPROF=ON /jcsda/oops-bundle/"
9987
100- - export BUILD_STATUS="0"
101- - echo $BUILD_STATUS
102- - echo $CODEBUILD_BUILD_SUCCEEDING
88+ - su - jedi -c "cd /home/jedi/oops
89+ && export FC=mpifort
90+ && export CC=mpicc
91+ && export CXX=mpicxx
92+ && cp ../DartConfiguration.tcl .
93+ && sed -i 's/oops-bundle/oops-bundle\/oops/' DartConfiguration.tcl
94+ && sed -i 's/jedi/jedi\/oops/' DartConfiguration.tcl
95+ && cat DartConfiguration.tcl
96+ && make -j4"
10397
10498 - if [ "$CODEBUILD_BUILD_SUCCEEDING" = "1" ];
10599 then export BUILD_STATUS="1";
106100 echo "Build passed";
107101 fi
108102 - echo $BUILD_STATUS
109103
110- - su - jcsdauser -c "cd /build_container
111- && ls
104+ # run ctest and upload to cdash
105+ - su - jedi -c "cd /home/jedi/oops
106+ && export FC=mpifort
107+ && export CC=mpicc
108+ && export CXX=mpicxx
109+ && ctest -C RelWithDebInfo -D ExperimentalTest -E test_qg_4dvar_saddlepoint"
110+
111+ finally :
112+ - su - jedi -c "cd /home/jedi/oops
112113 && export FC=mpifort
113114 && export CC=mpicc
114115 && export CXX=mpicxx
115- && cd oops
116- && ctest"
117-
116+ && ctest -C RelWithDebInfo -D ExperimentalSubmit -M Continuous -- --track Continuous --group Continuous"
117+
118118 post_build :
119119 commands :
120120 - echo Executing post_build phase
121121 - echo $CODEBUILD_BUILD_SUCCEEDING
122- - if [ "$BUILD_STATUS" = "1" ] && [ "$CODEBUILD_BUILD_SUCCEEDING" = "0" ];
123- then echo "Build passed, rerun failed tests";
124- su - jcsdauser -c "cd /build_container/oops
125- && ctest -VV --rerun-failed";
122+ - echo $BUILD_STATUS
123+
124+ # upload find cdash url and upload it as CodeBuild artifact to S3
125+ - if [ "$BUILD_STATUS" = "1" ];
126+ then echo "Build & tests passed, find cdash url";
127+ bash /jcsda/oops-bundle/oops/CI/cdash-url.sh /home/jedi/oops/Testing;
128+ url=$(bash /jcsda/oops-bundle/oops/CI/cdash-url.sh /home/jedi/oops/Testing);
129+ echo $url;
130+ echo ${url} > /jcsda/artifacts/cdash-url.txt;
131+ cat /jcsda/artifacts/cdash-url.txt;
126132 else echo "Build failed";
127133 fi
134+
128135 - echo 'Connect to CodeCov'
129- - cd /build_container /oops
136+ - cd /home/jedi /oops
130137 - pwd
131138 - ls
132- - bash /jcsda/oops-bundle/oops/CI/codecov_script.sh
139+ - bash /jcsda/oops-bundle/oops/CI/codecov_script_$org_name.sh
140+
141+ artifacts :
142+ files :
143+ - ' /jcsda/artifacts/*'
144+ name : oops-gnu-url
0 commit comments