diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e650e4a086cdc957cf54bb9747fdf1f6154e7f2b..97b796b0c7e5f6f4350c20ae1f05cd6c57c9ec6b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,7 +3,7 @@ image: eicweb.phy.anl.gov:4567/containers/image_recipes/ubuntu_dind:latest stages: - builder - config - - main + - slim - singularity builder:stable: @@ -13,12 +13,22 @@ builder:stable: only: - tags - master - - staging script: - cd containers/builder - head Dockerfile - make login - make release-cached +builder:testing: + stage: builder + tags: + - silicon + only: + - staging + script: + - cd containers/builder + - head Dockerfile + - make login + - make staging-cached builder:unstable: stage: builder tags: @@ -31,7 +41,7 @@ builder:unstable: - cd containers/builder - head Dockerfile - make login - - make develop + - make develop-cached ## I wish there were a simple way to transfer the "latest/unstable" strings ## between jobs... @@ -43,10 +53,24 @@ config:stable: only: - tags - master - - staging needs: ["builder:stable"] script: - - bash containers/release/configure_release.sh + - bash containers/release/configure_release.sh latest + artifacts: + paths: + - config/spack-env.sh + - config/eic-env.sh + - config/Dockerfile +config:testing: + image: eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:testing + stage: config + tags: + - silicon + only: + - staging + needs: ["builder:testing"] + script: + - bash containers/release/configure_release.sh testing artifacts: paths: - config/spack-env.sh @@ -63,7 +87,7 @@ config:unstable: - staging needs: ["builder:unstable"] script: - - bash containers/release/configure_release.sh + - bash containers/release/configure_release.sh unstable artifacts: paths: - config/spack-env.sh @@ -71,13 +95,12 @@ config:unstable: - config/Dockerfile release:stable: - stage: main + stage: slim tags: - silicon only: - tags - master - - staging needs: ["config:stable"] script: - cp config/Dockerfile containers/release/Dockerfile @@ -85,8 +108,21 @@ release:stable: - cd containers/release - make login - make release-cached +release:testing: + stage: slim + tags: + - silicon + only: + - staging + needs: ["config:testing"] + script: + - cp config/Dockerfile containers/release/Dockerfile + - cp config/eic-env.sh containers/release/eic-env.sh + - cd containers/release + - make login + - make staging-cached release:unstable: - stage: main + stage: slim tags: - silicon except: @@ -106,7 +142,6 @@ builder:singularity: tags: - singularity only: - - staging - tags needs: ["builder:stable"] when: manual @@ -127,7 +162,6 @@ release:singularity: tags: - singularity only: - - staging - tags needs: ["release:stable"] script: diff --git a/VERSION b/VERSION index c043eea7767eecb5567ebcbe8d671e45ef2833a8..b1b25a5ffae43c2f07d222b53240d871e7c1789b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.1 +2.2.2 diff --git a/containers/builder/Makefile b/containers/builder/Makefile index a59ed20bfe683653af7447435414d8e082e00514..208ea6f2e9a6f9c0da700464e5be8df10c3e8573 100644 --- a/containers/builder/Makefile +++ b/containers/builder/Makefile @@ -85,8 +85,13 @@ develop: build-nc publish-dev ## Develop build, do not publish latest @echo "Cleaning up" #docker rmi $(APP_NAME):latest +staging: build-nc publish-staging ## Develop build, do not publish latest + @echo "Cleaning up" + #docker rmi $(APP_NAME):latest + release-cached: build publish ## Make a release by building and publishing the `{version}` ans `latest` tagged containers to ECR develop-cached: build login publish-dev ## develop release +staging-cached: build login publish-staging ## develop release publish: login publish-latest publish-version #publish-version ## Publish the `{version}` ans `latest` tagged containers to ECR @echo "Publishing done" @@ -98,6 +103,11 @@ publish-latest: ## Publish the `latest` taged container to ECR docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest #docker rmi $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest +publish-staging: ## Publish the `unstable` taged container to ECR + @echo 'publish unstable to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)' + docker tag $(APP_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):testing + docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):testing + publish-dev: ## Publish the `unstable` taged container to ECR @echo 'publish unstable to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)' docker tag $(APP_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):unstable diff --git a/containers/release/Dockerfile.in b/containers/release/Dockerfile.in index 490ed179f67c2b67b832fdc457b2755774717b6b..7d49e32783f04f98a2f7fd2ffa076c23f18c986c 100644 --- a/containers/release/Dockerfile.in +++ b/containers/release/Dockerfile.in @@ -1,7 +1,7 @@ # Release container for Argonne EIC software # Copy over relevant files from builder # -FROM eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:latest as builder +FROM eicweb.phy.anl.gov:4567/containers/eic_container/eic_builder:@TAG@ as builder RUN cd /opt/spack-environment && spack env activate . && spack gc -y # Strip all the binaries @@ -28,12 +28,15 @@ ENV DOCKERFILE_DISTRO=ubuntu \ ## TODO: move this to upstream, as we should have ssh available in ## any dev container +## poppler-utils for pdftoppm, is this is right now now supported by the +## Spack version RUN apt-get -yqq update \ && apt-get -yqq install --no-install-recommends \ - openssh-client \ ghostscript \ gv \ - && locale-gen en_US.UTF-8 \ + poppler-utils \ + && apt-get -yqq purge lmod \ + && apt-get -yqq autoremove \ && rm -rf /var/lib/apt/lists/* ## Copy over files from builder diff --git a/containers/release/Makefile b/containers/release/Makefile index 5bb4a31e34384d48b86e5be4ca4b3c1e8a3a3c1e..307466d05a0bd4fd2222854816cb217cf35095d2 100644 --- a/containers/release/Makefile +++ b/containers/release/Makefile @@ -81,11 +81,16 @@ release: build-nc publish ## Make a release by building and publishing the `{ver @echo "Cleaning up" #docker rmi $(APP_NAME):latest +staging: build-nc publish-staging ## Develop build, do not publish latest + @echo "Cleaning up" + #docker rmi $(APP_NAME):latest + develop: build-nc publish-dev ## Develop build, do not publish latest @echo "Cleaning up" #docker rmi $(APP_NAME):latest release-cached: build publish ## Make a release by building and publishing the `{version}` ans `latest` tagged containers to ECR +staging-cached: build login publish-staging ## staging release develop-cached: build login publish-dev ## develop release publish: login publish-latest publish-version #publish-version ## Publish the `{version}` ans `latest` tagged containers to ECR @@ -98,6 +103,11 @@ publish-latest: ## Publish the `latest` taged container to ECR docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest #docker rmi $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):latest +publish-staging: ## Publish the `unstable` taged container to ECR + @echo 'publish unstable to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)' + docker tag $(APP_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):testing + docker push $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):testing + publish-dev: ## Publish the `unstable` taged container to ECR @echo 'publish unstable to $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME)' docker tag $(APP_NAME):latest $(REG_NAME)/$(GL_REG_GROUP)/$(APP_NAME):unstable diff --git a/containers/release/configure_release.sh b/containers/release/configure_release.sh index 144cf4d21df7017d3c6348e08638a0ca51087640..8af0a689922c1b2610c4b4f145ea62d84f1e5ace 100644 --- a/containers/release/configure_release.sh +++ b/containers/release/configure_release.sh @@ -9,6 +9,8 @@ mkdir -p config cp /etc/profile.d/z10_spack_environment.sh config/spack-env.sh +export TAG=$1 + ## Spack sets the man-path, which stops bash from using the default man-path ## We can fix this by appending a trailing colon to MANPATH sed -i '/MANPATH/ s/;$/:;/' config/spack-env.sh @@ -20,4 +22,5 @@ grep export config/spack-env.sh | \ ## create our release Dockerfile sed '/^@ENV@/r config/eic-env.sh' containers/release/Dockerfile.in | \ - sed '/^@ENV@/d' > config/Dockerfile + sed '/^@ENV@/d' | \ + sed "s/@TAG@/$TAG/" > config/Dockerfile