Skip to content
Snippets Groups Projects

Re-factor repository workflow

Merged Sylvester Joosten requested to merge 13-re-factor-repository-workflow into master
Compare and
19 files
+ 276
671
Compare changes
  • Side-by-side
  • Inline
Files
19
+ 24
126
image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest
stages:
- builder
- config
- slim
- singularity
- trigger
## We use minimal file artifacts to transport variables between job
## stages, such as the branch we are working on and the need for
## caching.
## By evaluating these files in the before_script, we can set
## relevant environment variables before our pipelines run
## make note if we cannot use caching for one of the stages
## by touching files in .ci_env
default:
tags:
- silicon
artifacts:
paths:
- .ci-env
before_script:
- mkdir -p .ci-env
- |
if [ -f .ci-env/release ]; then
export BRANCH='release'
elif [ -f .ci-env/develop ]; then
export BRANCH='develop'
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
tags:
- silicon
## Stable or unstable branch?
init:stable:
stage: .pre
rules:
- if: '$CI_COMMIT_TAG || $CI_COMMIT_BRANCH == "master"'
when: always
script:
- touch .ci-env/release
init:unstable:
stage: .pre
rules:
- if: '$CI_COMMIT_TAG == null && $CI_COMMIT_BRANCH != "master"'
when: always
script:
- touch .ci-env/develop
init:builder-nc:
detect_changes:builder:
stage: .pre
rules:
- changes:
- gitlab-ci/docker/*
- containers/builder/Dockerfile
- containers/builder/spack.yaml
- spack/packages/**/*
script:
- mkdir -p .ci-env
- touch .ci-env/builder-nc
init:release-nc:
detect_changes:release:
stage: .pre
rules:
- changes:
- gitlab-ci/docker/*
- gitlab-ci/singularity/*
- containers/release/Dockerfile.in
- containers/release/configure_release.sh
script:
- mkdir -p .ci-env
- touch .ci-env/release-nc
builder:
stage: builder
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: on_success
- if: '$CI_COMMIT_BRANCH == "develop"'
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:
- cp -r spack containers/builder/np-spack
- cd containers/builder
- head Dockerfile
- make login
- echo "Creating builder image for ${BUILDER_TARGET}"
- make ${BUILDER_TARGET}
.config:
## Init our job for our desired branches/tags/events
init:
stage: config
script:
- bash containers/release/configure_release.sh ${BRANCH}
- ./gitlab-ci/configure_pipeline.sh gitlab-ci/build_and_deploy.yml.in
artifacts:
paths:
- config
config:stable:
extends: .config
image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:latest
only:
- tags
- master
config:unstable:
extends: .config
image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:unstable
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: manual
- if: '$CI_COMMIT_BRANCH == "develop"'
when: on_success
release:
stage: slim
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: on_success
- if: '$CI_COMMIT_BRANCH == "develop"'
when: on_success
- if: '$CI_COMMIT_TAG'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: manual
script:
- cp config/Dockerfile containers/release/Dockerfile
- cp config/eic-env.sh containers/release/eic-env.sh
- cd containers/release
- make login
- make ${RELEASE_TARGET}
- build_and_deploy.yml
release:singularity:
stage: singularity
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: manual
- if: '$CI_COMMIT_BRANCH == "develop"'
when: manual
- if: '$CI_COMMIT_TAG'
when: on_success
- if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_SOURCE_BRANCH != "develop"'
when: manual
script:
- cp config/eic.def 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
## Dispatch if we ran the previous stage
run:default:
stage: trigger
trigger:
include:
- artifact: build_and_deploy.yml
job: init
strategy: depend
Loading