Skip to content
Snippets Groups Projects
Commit e9249197 authored by Marcel Loose's avatar Marcel Loose :sunglasses:
Browse files

Sync with development

parent 6fa275ac
No related branches found
No related tags found
1 merge request!224Rewrite of CI/CD pipeline
Pipeline #100664 passed
...@@ -5,6 +5,9 @@ workflow: ...@@ -5,6 +5,9 @@ workflow:
# Don't create a pipeline if commit is on a branch with open merge requests # Don't create a pipeline if commit is on a branch with open merge requests
- if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never when: never
# # Don't run if a tag is created, because this workflow itself may create a tag!
# - if: $CI_COMMIT_TAG
# when: never
- when: always - when: always
variables: variables:
...@@ -42,14 +45,15 @@ after_script: ...@@ -42,14 +45,15 @@ after_script:
image: bitnami/git image: bitnami/git
script: script:
- eval $(ssh-agent -s) - eval $(ssh-agent -s)
- chmod 400 "${SSH_PRIVATE_KEY}" - chmod 400 "$SSH_PRIVATE_KEY"
- ssh-add "${SSH_PRIVATE_KEY}" - ssh-add "$SSH_PRIVATE_KEY"
- mkdir -p ~/.ssh - mkdir -p ~/.ssh
- ssh-keyscan ${CI_SERVER_HOST} > ~/.ssh/known_hosts - ssh-keyscan $CI_SERVER_HOST > ~/.ssh/known_hosts
- git config user.email $GITLAB_USER_EMAIL - git config user.email $GITLAB_USER_EMAIL
- git config user.name $GITLAB_USER_NAME - git config user.name $GITLAB_USER_NAME
- git remote set-url origin git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git - git remote set-url origin git@$CI_SERVER_HOST:$CI_PROJECT_PATH.git
# Docker login
.setup_docker: .setup_docker:
stage: build stage: build
tags: tags:
...@@ -85,11 +89,11 @@ prepare_release: ...@@ -85,11 +89,11 @@ prepare_release:
when: on_failure when: on_failure
before_script: before_script:
# When building a release, bail out if release tag already exists # When building a release, bail out if release tag already exists
- RELEASE="$(echo -n ${CI_COMMIT_BRANCH} | sed 's,^releases/,,')" - RELEASE="$(echo -n $CI_COMMIT_BRANCH | sed 's,^releases/,,')"
- | - |
if git ls-remote --tags --exit-code origin "${RELEASE}" > /dev/null if git ls-remote --tags --exit-code origin "$RELEASE" > /dev/null
then then
echo "*** Release ${RELEASE} already exists. Bailing out! ***" echo "*** Release $RELEASE already exists. Bailing out! ***"
touch .tag.exists touch .tag.exists
exit 1 exit 1
fi fi
...@@ -98,16 +102,16 @@ prepare_release: ...@@ -98,16 +102,16 @@ prepare_release:
# Make sure the current commit is checked out # Make sure the current commit is checked out
- git checkout "$CI_COMMIT_BRANCH" - git checkout "$CI_COMMIT_BRANCH"
# Update dockerPull image URI in CWL steps with a tagged version # Update dockerPull image URI in CWL steps with a tagged version
- sed -ri "/dockerPull/s,(astronrd/linc).*,\1:${RELEASE}," steps/*.cwl - sed -ri "/dockerPull/s,(astronrd/linc).*,\1:$RELEASE," steps/*.cwl
- git add -u steps/*.cwl - git add -u steps/*.cwl
# Only commit if there are changes # Only commit if there are changes
- | - |
if test -n "$(git status -uno --porcelain)" if test -n "$(git status -uno --porcelain)"
then then
git commit -m "Tag ${RELEASE} added to dockerPull URI in CWL steps (by GitLab CI)" git commit -m "Tag $RELEASE added to dockerPull URI in CWL steps (by GitLab CI)"
fi fi
# Tag current revision # Tag current revision
- git tag -a ${RELEASE} -m "Git tag ${RELEASE} created (by GitLab CI)" - git tag -a $RELEASE -m "Git tag ${RELEASE} created (by GitLab CI)"
# Skip CI on this push # Skip CI on this push
- git push --follow-tags -o ci.skip - git push --follow-tags -o ci.skip
...@@ -118,13 +122,13 @@ versioning: ...@@ -118,13 +122,13 @@ versioning:
- pip install setuptools_scm - pip install setuptools_scm
script: script:
# Make sure the current branch is checked out # Make sure the current branch is checked out
- git checkout ${CI_COMMIT_BRANCH} - git checkout $CI_COMMIT_BRANCH
- ./Docker/fetch_latest_commits.sh | tee commits.txt > versions.env - ./Docker/fetch_latest_commits.sh | tee commits.txt > versions.env
- echo LINC_VERSION=$(python -m setuptools_scm) >> versions.env - echo LINC_VERSION=$(python -m setuptools_scm) >> versions.env
- echo RELEASE=$(echo ${CI_COMMIT_BRANCH} | sed -n 's,^releases/,,p') >> versions.env - echo RELEASE=$(echo $CI_COMMIT_BRANCH | sed -n 's,^releases/,,p') >> versions.env
# Use hash of commits to determine version of base image (and rebuild if necessary) # Use hash of commits to determine version of base image (and rebuild if necessary)
- echo INTEGRATION_BASE_IMAGE=${CI_REGISTRY_IMAGE}/integration_base:$(sha256sum commits.txt | cut -d " " -f 1) >> versions.env - echo INTEGRATION_BASE_IMAGE=$CI_REGISTRY_IMAGE/integration_base:$(sha256sum commits.txt | cut -d " " -f 1) >> versions.env
- echo INTEGRATION_IMAGE=${CI_REGISTRY_IMAGE}/integration_full:$(git log -n 1 --pretty=format:%H) >> versions.env - echo INTEGRATION_IMAGE=$CI_REGISTRY_IMAGE/integration_full:$(git log -n 1 --pretty=format:%H) >> versions.env
- cat versions.env - cat versions.env
artifacts: artifacts:
reports: reports:
...@@ -142,7 +146,7 @@ build_base: ...@@ -142,7 +146,7 @@ build_base:
else else
DOCKER_CACHE_PARAMETERS="" DOCKER_CACHE_PARAMETERS=""
fi fi
docker build --tag $INTEGRATION_BASE_IMAGE ${DOCKER_CACHE_PARAMETERS} \ docker build --tag $INTEGRATION_BASE_IMAGE $DOCKER_CACHE_PARAMETERS \
--build-arg LOFARSTMAN_COMMIT \ --build-arg LOFARSTMAN_COMMIT \
--build-arg DYSCO_COMMIT \ --build-arg DYSCO_COMMIT \
--build-arg IDG_COMMIT \ --build-arg IDG_COMMIT \
...@@ -168,9 +172,9 @@ install_linc: ...@@ -168,9 +172,9 @@ install_linc:
DOCKER_CACHE_PARAMETERS="" DOCKER_CACHE_PARAMETERS=""
fi fi
docker build \ docker build \
${DOCKER_CACHE_PARAMETERS} \ $DOCKER_CACHE_PARAMETERS \
--build-arg BASE_TAG=$INTEGRATION_BASE_IMAGE \ --build-arg BASE_TAG=$INTEGRATION_BASE_IMAGE \
--build-arg LINC_VERSION=${LINC_VERSION} \ --build-arg LINC_VERSION=$LINC_VERSION \
--file Docker/Dockerfile-linc \ --file Docker/Dockerfile-linc \
--tag $INTEGRATION_IMAGE \ --tag $INTEGRATION_IMAGE \
. .
...@@ -227,7 +231,7 @@ run_hba_calibrator: ...@@ -227,7 +231,7 @@ run_hba_calibrator:
image: $INTEGRATION_IMAGE image: $INTEGRATION_IMAGE
script: script:
- cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_hba_calibrator/ workflows/HBA_calibrator.cwl test_jobs/HBA_calibrator.json - cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_hba_calibrator/ workflows/HBA_calibrator.cwl test_jobs/HBA_calibrator.json
- test_jobs/check_workflow_results.py results ${CI_PROJECT_DIR}/data/results_calibrator - test_jobs/check_workflow_results.py results $CI_PROJECT_DIR/data/results_calibrator
after_script: after_script:
- find /tmp/run_hba_calibrator -name "*.log" -print0 | tar czf hba_calibrator_logs.tar.gz --null -T - - find /tmp/run_hba_calibrator -name "*.log" -print0 | tar czf hba_calibrator_logs.tar.gz --null -T -
artifacts: artifacts:
...@@ -240,11 +244,11 @@ run_hba_target: ...@@ -240,11 +244,11 @@ run_hba_target:
image: $INTEGRATION_IMAGE image: $INTEGRATION_IMAGE
script: script:
- cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_hba_target/ workflows/HBA_target.cwl test_jobs/HBA_target.json - cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_hba_target/ workflows/HBA_target.cwl test_jobs/HBA_target.json
- test_jobs/check_workflow_results.py results ${CI_PROJECT_DIR}/data/results_target - test_jobs/check_workflow_results.py results $CI_PROJECT_DIR/data/results_target
after_script: after_script:
- find /tmp/run_hba_target -name "*.log" -print0 | tar czf hba_target_logs.tar.gz --null -T - - find /tmp/run_hba_target -name "*.log" -print0 | tar czf hba_target_logs.tar.gz --null -T -
- find /tmp/run_hba_target -name "*.png" -print0 | tar czf inspection.tar.gz --null -T - - find /tmp/run_hba_target -name "*.png" -print0 | tar czf inspection.tar.gz --null -T -
- find ${CI_PROJECT_DIR}/results/ -name "cal_solutions.h5" -print0 | tar czf cal_solutions.tar.gz --null -T - - find $CI_PROJECT_DIR/results/ -name "cal_solutions.h5" -print0 | tar czf cal_solutions.tar.gz --null -T -
artifacts: artifacts:
paths: paths:
- hba_target_logs.tar.gz - hba_target_logs.tar.gz
...@@ -257,11 +261,11 @@ run_hba_target_selfcal: ...@@ -257,11 +261,11 @@ run_hba_target_selfcal:
image: $INTEGRATION_IMAGE image: $INTEGRATION_IMAGE
script: script:
- cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_hba_target/ workflows/HBA_target.cwl test_jobs/HBA_target_selfcal.json - cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_hba_target/ workflows/HBA_target.cwl test_jobs/HBA_target_selfcal.json
- test_jobs/check_workflow_results.py --skip_soltabs TGSSphase_final results ${CI_PROJECT_DIR}/data/results_target_selfcal - test_jobs/check_workflow_results.py --skip_soltabs TGSSphase_final results $CI_PROJECT_DIR/data/results_target_selfcal
after_script: after_script:
- find /tmp/run_hba_target -name "*.log" -print0 | tar czf hba_target_selfcal_logs.tar.gz --null -T - - find /tmp/run_hba_target -name "*.log" -print0 | tar czf hba_target_selfcal_logs.tar.gz --null -T -
- find /tmp/run_hba_target -name "*.png" -print0 | tar czf inspection.tar.gz --null -T - - find /tmp/run_hba_target -name "*.png" -print0 | tar czf inspection.tar.gz --null -T -
- find ${CI_PROJECT_DIR}/results/ -name "cal_solutions.h5" -print0 | tar czf cal_solutions.tar.gz --null -T - - find $CI_PROJECT_DIR/results/ -name "cal_solutions.h5" -print0 | tar czf cal_solutions.tar.gz --null -T -
artifacts: artifacts:
paths: paths:
- hba_target_selfcal_logs.tar.gz - hba_target_selfcal_logs.tar.gz
...@@ -274,7 +278,7 @@ run_lba_calibrator: ...@@ -274,7 +278,7 @@ run_lba_calibrator:
image: $INTEGRATION_IMAGE image: $INTEGRATION_IMAGE
script: script:
- cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_lba_calibrator workflows/LBA_calibrator.cwl test_jobs/LBA_calibrator.json - cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_lba_calibrator workflows/LBA_calibrator.cwl test_jobs/LBA_calibrator.json
- test_jobs/check_workflow_results.py results ${CI_PROJECT_DIR}/data/results_calibrator_lba - test_jobs/check_workflow_results.py results $CI_PROJECT_DIR/data/results_calibrator_lba
after_script: after_script:
- find /tmp/run_lba_calibrator -name "*.log" -print0 | tar czf lba_calibrator_logs.tar.gz --null -T - - find /tmp/run_lba_calibrator -name "*.log" -print0 | tar czf lba_calibrator_logs.tar.gz --null -T -
artifacts: artifacts:
...@@ -287,11 +291,11 @@ run_lba_target: ...@@ -287,11 +291,11 @@ run_lba_target:
image: $INTEGRATION_IMAGE image: $INTEGRATION_IMAGE
script: script:
- cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_lba_target/ workflows/LBA_target.cwl test_jobs/LBA_target.json - cwltool --no-container --preserve-environment PATH --preserve-environment LINC_DATA_ROOT --preserve-environment PYTHONPATH --outdir results --leave-tmpdir --tmpdir-prefix /tmp/run_lba_target/ workflows/LBA_target.cwl test_jobs/LBA_target.json
- test_jobs/check_workflow_results.py --skip_soltabs GSMtec_final results ${CI_PROJECT_DIR}/data/results_target_lba - test_jobs/check_workflow_results.py --skip_soltabs GSMtec_final results $CI_PROJECT_DIR/data/results_target_lba
after_script: after_script:
- find /tmp/run_lba_target -name "*.log" -print0 | tar czf lba_target_logs.tar.gz --null -T - - find /tmp/run_lba_target -name "*.log" -print0 | tar czf lba_target_logs.tar.gz --null -T -
- find /tmp/run_lba_target -name "*.png" -print0 | tar czf inspection.tar.gz --null -T - - find /tmp/run_lba_target -name "*.png" -print0 | tar czf inspection.tar.gz --null -T -
- find ${CI_PROJECT_DIR}/results/ -name "cal_solutions.h5" -print0 | tar czf cal_solutions.tar.gz --null -T - - find $CI_PROJECT_DIR/results/ -name "cal_solutions.h5" -print0 | tar czf cal_solutions.tar.gz --null -T -
artifacts: artifacts:
paths: paths:
- lba_target_logs.tar.gz - lba_target_logs.tar.gz
...@@ -314,7 +318,7 @@ build_doc: ...@@ -314,7 +318,7 @@ build_doc:
- docs/build/html - docs/build/html
rules: rules:
# Only add job for commits to the default branch or on merge request events # Only add job for commits to the default branch or on merge request events
- if: '$CI_COMMIT_BRANCH == "${CI_DEFAULT_BRANCH}" && $CI_PIPELINE_SOURCE != "schedule"' - if: '$CI_COMMIT_BRANCH == "$CI_DEFAULT_BRANCH" && $CI_PIPELINE_SOURCE != "schedule"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- changes: - changes:
- docs/**/* - docs/**/*
...@@ -323,8 +327,8 @@ deploy_docker: ...@@ -323,8 +327,8 @@ deploy_docker:
stage: deploy stage: deploy
extends: .deploy extends: .deploy
script: script:
- LINC_TAG=${LINC_VERSION//[^[:alnum:]_.-]/-} - LINC_TAG=$LINC_VERSION//[^[:alnum:]_.-]/-
- echo "LINC_TAG=${LINC_TAG}" - echo "LINC_TAG=$LINC_TAG"
- docker pull $INTEGRATION_IMAGE - docker pull $INTEGRATION_IMAGE
- docker tag $INTEGRATION_IMAGE $CI_PROJECT_PATH:$LINC_TAG - docker tag $INTEGRATION_IMAGE $CI_PROJECT_PATH:$LINC_TAG
- docker tag $INTEGRATION_IMAGE $CI_PROJECT_PATH:latest - docker tag $INTEGRATION_IMAGE $CI_PROJECT_PATH:latest
...@@ -332,7 +336,7 @@ deploy_docker: ...@@ -332,7 +336,7 @@ deploy_docker:
- docker push $CI_PROJECT_PATH:latest - docker push $CI_PROJECT_PATH:latest
rules: rules:
# Run on the default branch or on a release branch # Run on the default branch or on a release branch
- if: '$CI_COMMIT_BRANCH == "${CI_DEFAULT_BRANCH}"' - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH =~ /^releases//' - if: '$CI_COMMIT_BRANCH =~ /^releases//'
when: on_success when: on_success
...@@ -341,7 +345,7 @@ deploy_docker_tag_stable: ...@@ -341,7 +345,7 @@ deploy_docker_tag_stable:
extends: .deploy extends: .deploy
when: manual when: manual
script: script:
- echo "INTEGRATION_IMAGE=${INTEGRATION_IMAGE}" - echo "INTEGRATION_IMAGE=$INTEGRATION_IMAGE"
- docker pull $INTEGRATION_IMAGE - docker pull $INTEGRATION_IMAGE
- docker tag $INTEGRATION_IMAGE $CI_PROJECT_PATH:stable - docker tag $INTEGRATION_IMAGE $CI_PROJECT_PATH:stable
- docker push $CI_PROJECT_PATH:stable - docker push $CI_PROJECT_PATH:stable
...@@ -356,14 +360,14 @@ rollback_release: ...@@ -356,14 +360,14 @@ rollback_release:
before_script: before_script:
- !reference [.setup_git, script] - !reference [.setup_git, script]
script: script:
- RELEASE="$(echo -n ${CI_COMMIT_BRANCH} | sed 's,^releases/,,')" - RELEASE="$(echo -n $CI_COMMIT_BRANCH | sed 's,^releases/,,')"
- | - |
if test -f .tag.exists if test -f .tag.exists
then then
echo "*** Not removing existing tag ${RELEASE}! ***" echo "*** Not removing existing tag $RELEASE! ***"
exit 1 exit 1
else else
git push origin -d ${RELEASE} git push origin -d $RELEASE
fi fi
finalize_release: finalize_release:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment