Skip to content
Snippets Groups Projects
Commit e5cbbbeb authored by Sylvester Joosten's avatar Sylvester Joosten
Browse files

Major updates to the CI, now avoid repeat pipeline definitions by passing...

Major updates to the CI, now avoid repeat pipeline definitions by passing minimal artifacts between jobs
parent 9d5a129b
No related branches found
No related tags found
1 merge request!16New feature version
image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest
stages: stages:
- init
- builder - builder
- config - config
- slim - slim
- singularity - singularity
builder:stable: ## We use minimal file artifacts to transport variables between job
stage: builder ## stages, such as the branch we are working on and the need for
tags: ## caching.
- silicon ## By evaluating these files in the before_script, we can set
only: ## relevant environment variables before our pipelines run
- tags default:
- master artifacts:
paths:
- .ci-env
- config
before_script:
- mkdir -p .ci-env
- if [ -f .ci-env/release ]; then
export BRANCH='release'
export SINGULARITY_DEF='eic-latest.def'
elif [ -f .ci-env/develop ]; then
export BRANCH='develop'
export SINGULARITY_DEF='eic-unstable.def'
else export BRANCH='UNKNOWN'
fi
- if [ -f .ci-env/builder-nc ]; then
export BUILDER_TARGET="${BRANCH}"
else
export BUILDER_TARGET="${BRANCH}-cached"
fi
- if [ -f .ci-env/release-nc ]; then
export RELEASE_TARGET="${BRANCH}"
else
export RELEASE_TARGET="${BRANCH}-cached"
fi
## Stable or unstable branch?
init:stable:
stage: init
rules:
- if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH == "master"'
when: always
script: script:
- cp -r spack containers/builder/np-spack - touch .ci-env/release
- cd containers/builder init:unstable:
- head Dockerfile rules:
- make login - if: '$CI_COMMIT_TAG == null && $CI_COMMIT_BRANCH != "master"'
- make release-cached when: always
builder:unstable: script:
- touch .ci-env/develop
init:builder-nc:
stage: init
rules:
- changes:
- containers/builder/Dockerfile
- containers/builder/spack.yaml
- spack/packages/**/*
script:
- touch .ci-env/builder-nc
init:release-nc:
stage: init
rules:
- changes:
- containers/release/Dockerfile.in
- containers/release/configure_release.sh
script:
- touch .ci-env/release-nc
builder:
stage: builder stage: builder
tags: tags:
- silicon - silicon
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"' - if: '$CI_COMMIT_BRANCH == "master"'
when: always when: on_success
- if: '$CI_COMMIT_BRANCH == "develop"' - if: '$CI_COMMIT_BRANCH == "develop"'
when: always when: on_success
- if: '$CI_COMMIT_TAG'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: on_success
script: script:
- cp -r spack containers/builder/np-spack - cp -r spack containers/builder/np-spack
- cd containers/builder - cd containers/builder
- head Dockerfile - head Dockerfile
- make login - make login
- make develop-cached - make ${BUILDER_TARGET}
config:stable: config:stable:
image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:latest image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:latest
...@@ -43,14 +98,8 @@ config:stable: ...@@ -43,14 +98,8 @@ config:stable:
only: only:
- tags - tags
- master - master
needs: ["builder:stable"]
script: script:
- bash containers/release/configure_release.sh latest - bash containers/release/configure_release.sh latest
artifacts:
paths:
- config/spack-env.sh
- config/eic-env.sh
- config/Dockerfile
config:unstable: config:unstable:
image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:unstable image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:unstable
stage: config stage: config
...@@ -61,58 +110,45 @@ config:unstable: ...@@ -61,58 +110,45 @@ config:unstable:
when: manual when: manual
- if: '$CI_COMMIT_BRANCH == "develop"' - if: '$CI_COMMIT_BRANCH == "develop"'
when: on_success when: on_success
needs: ["builder:unstable"]
script: script:
- bash containers/release/configure_release.sh unstable - bash containers/release/configure_release.sh unstable
artifacts:
paths:
- config/spack-env.sh
- config/eic-env.sh
- config/Dockerfile
release:stable: release:
stage: slim
tags:
- silicon
only:
- tags
- master
needs: ["config:stable"]
script:
- cp config/Dockerfile containers/release/Dockerfile
- cp config/eic-env.sh containers/release/eic-env.sh
- cd containers/release
- make login
- make release-cached
release:unstable:
stage: slim stage: slim
tags: tags:
- silicon - silicon
rules: rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"' - if: '$CI_COMMIT_BRANCH == "master"'
when: manual when: on_success
- if: '$CI_COMMIT_BRANCH == "develop"' - if: '$CI_COMMIT_BRANCH == "develop"'
when: on_success when: on_success
needs: ["config:unstable"] - if: '$CI_COMMIT_TAG'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: manual
script: script:
- cp config/Dockerfile containers/release/Dockerfile - cp config/Dockerfile containers/release/Dockerfile
- cp config/eic-env.sh containers/release/eic-env.sh - cp config/eic-env.sh containers/release/eic-env.sh
- cd containers/release - cd containers/release
- make login - make login
- make develop-cached - make ${RELEASE_TARGET}
release:singularity: release:singularity:
stage: singularity stage: singularity
tags: tags:
- silicon - silicon
rules: rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: manual
- if: '$CI_COMMIT_BRANCH == "develop"'
when: manual
- if: '$CI_COMMIT_TAG' - if: '$CI_COMMIT_TAG'
when: on_success when: on_success
- if: '$CI_COMMIT_BRANCH == "master"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: manual when: manual
needs: ["release:stable"] needs: ["release:stable"]
script: script:
- cp containers/release/eic.def . - cp containers/release/${SINGULARITY_DEF} eic.def
- /bin/bash .gitlabci/setup.sh - /bin/bash .gitlabci/setup.sh
- /bin/bash .gitlabci/build.sh eic.def - /bin/bash .gitlabci/build.sh eic.def
- mkdir -p build - mkdir -p build
...@@ -123,25 +159,3 @@ release:singularity: ...@@ -123,25 +159,3 @@ release:singularity:
paths: paths:
- build/eic.sif - build/eic.sif
- build/eic.def - build/eic.def
release:singularity:unstable:
stage: singularity
tags:
- silicon
needs: ["release:unstable"]
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: manual
- if: '$CI_COMMIT_BRANCH == "develop"'
when: manual
script:
- cp containers/release/eic.def .
- /bin/bash .gitlabci/setup.sh
- /bin/bash .gitlabci/build.sh eic.def
- mkdir -p build
- cp eic.sif build/.
- cp eic.def build/.
artifacts:
expire_in: 90 days
paths:
- build/eic.sif
- build/eic.def
...@@ -10,7 +10,7 @@ From: eicweb.phy.anl.gov:4567/containers/eic_container/eic:latest ...@@ -10,7 +10,7 @@ From: eicweb.phy.anl.gov:4567/containers/eic_container/eic:latest
%labels %labels
Maintainer "Whitney Armstrong, Sylvester Joosten" Maintainer "Whitney Armstrong, Sylvester Joosten"
Version v2.0 Version v2.x
%post -c /bin/bash %post -c /bin/bash
echo " -------------------------------------------------" echo " -------------------------------------------------"
......
Bootstrap: docker
From: eicweb.phy.anl.gov:4567/containers/eic_container/eic:unstable
%help
EIC software container.
Tools:
- eic_shell : Bash shell in this container
- root : Root shell in the container
- ipython : Python shell in the container
%labels
Maintainer "Whitney Armstrong, Sylvester Joosten"
Version v2.x
%post -c /bin/bash
echo " -------------------------------------------------"
echo " ===> Image setup complete"
echo " -------------------------------------------------"
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