diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 808d0833dcd9ec428168b4801fef3fee58198460..80d17d0ce41dad7f863537a6162846560a74ce74 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,7 +39,6 @@ stages: - config - build:base ## base OS image - build:dev ## naked dev container image - - build:release ## dressed release container image - deploy ## build/deploy singularity images - test - finalize @@ -55,39 +54,10 @@ default: - docker logout - docker logout ${CI_REGISTRY} -## only run CI for in the following cases: -## master, stable branch, release tag, MR event and nightly builds -## nightly builds are now part of the regular master build in order to keep -## all artifacts available at all times. workflow: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_BRANCH == "master"' - - if: '$CI_COMMIT_BRANCH =~ /^v[0-9]+\.[0-9]+-stable/' ## main stable branch: vX.Y-stable - - if: '$CI_COMMIT_BRANCH =~ /^v[0-9]+\.[0-9]+-[a-z]+-stable/' ## special stable branch: vX.Y-acadia-stable (etc) - - if: '$CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+/' ## commit tags start with vX.Y.Z with optional suffix - -## plan: -## Workflows: -## - master --> config + all build stages + singularity -# + nightly build:release + nightly singularity -## - v3.0-stable --> config + all build stages + singularity -## - v3.0.0 --> config + all build stages + singularity -## - MR --> config + all build stages -## -## Container images tags -## - master --> testing -## - <nightly> --> nightly (run as part of master) -## - v3.0-stable --> 3.0-stable -## - v3.0.0 --> 3.0-stable, 3.0.0 -## - acadia -## - MR --> 3.0-unstable (on all registries) -## --> unstable-mr-XXX (on eicweb only, untag at end of pipeline) -## - all other --> do nothing -## -## caching strategy for dispatch to multiple nodes and to avoid -## --> try this strategy: https://medium.com/titansoft-engineering/docker-build-cache-sharing-on-multi-hosts-with-buildkit-and-buildx-eb8f7005918e -## (first try with buildx didn't pan out, let's try again later) + - if: '$CI_COMMIT_BRANCH == "acts-material-scan"' version: stage: config @@ -97,42 +67,26 @@ version: VERSION_FULL=${VERSION} VERSION_SHORT=${VERSION%.*} TESTING="testing" - NIGHTLY="nightly" ## determine appropriate major docker tag for this scenario - | ## internal tag used for the CI. Also temporarily tagged ## on eicweb to communicate between jobs (removed in cleanup job) - INTERNAL_TAG="testing-$VERSION" + INTERNAL_TAG="${TESTING}-$VERSION" ## main export tag, optional secondary export tag, EXPORT_TAG=${TESTING} EXPORT_TAG2= ## nightly tag, only used in master - NIGHTLY_TAG=${NIGHTLY} if [ "x${CI_PIPELINE_SOURCE}" = "xmerge_request_event" ]; then INTERNAL_TAG="unstable-mr-${CI_MERGE_REQUEST_ID}" - NIGHTLY_TAG="${INTERNAL_TAG}-nightly" EXPORT_TAG=${VERSION_SHORT}-unstable EXPORT_TAG2= elif [[ "$CI_COMMIT_TAG" =~ ^v${VERSION} ]]; then VERSION_FULL="${CI_COMMIT_TAG:1}" INTERNAL_TAG="stable-tag-${VERSION_FULL}" - NIGHTLY_TAG= - EXPORT_TAG=${VERSION_FULL} - EXPORT_TAG2= - elif [ "$CI_COMMIT_BRANCH" = "v${VERSION_SHORT}-stable" ]; then - INTERNAL_TAG="stable-br-${VERSION}" - NIGHTLY_TAG= - EXPORT_TAG=${VERSION_SHORT}-stable - EXPORT_TAG2= - elif [[ "$CI_COMMIT_BRANCH" =~ ^v${VERSION_SHORT}-[a-z]+-stable ]]; then - VERSION_FULL="${CI_COMMIT_BRANCH:1}" - INTERNAL_TAG="stable-br-${VERSION_FULL}" - NIGHTLY_TAG= EXPORT_TAG=${VERSION_FULL} EXPORT_TAG2= fi echo "INTERNAL_TAG=$INTERNAL_TAG" >> build.env - echo "NIGHTLY_TAG=$NIGHTLY_TAG" >> build.env echo "EXPORT_TAG=$EXPORT_TAG" >> build.env echo "EXPORT_TAG2=$EXPORT_TAG2" >> build.env cat build.env @@ -186,7 +140,7 @@ jug_dev:default: - version - debian_base:default variables: - BUILD_IMAGE: "jug_dev" + BUILD_IMAGE: "acts_material_scan" script: ## calculate a hash based on the spack.yaml file and the spack directory ## and use this spack as a docker variable to force a rebuild when there @@ -227,60 +181,6 @@ jug_dev:default: ## standard exports - !reference [.build, script] -jug_xl:default: - extends: .build - stage: build:release - interruptible: true - needs: - - version - - jug_dev:default - variables: - BUILD_IMAGE: "jug_xl" - script: - - docker build -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${INTERNAL_TAG} - -f containers/jug/xl.Dockerfile - --build-arg INTERNAL_TAG=${INTERNAL_TAG} - --build-arg JUGGLER_VERSION=${JUGGLER_VERSION} - --build-arg NPDET_VERSION=${NPDET_VERSION} - --build-arg EICD_VERSION=${EICD_VERSION} - --build-arg AFTERBURNER_VERSION=${AFTERBURNER_VERSION} - --build-arg DETECTOR_VERSION=${DETECTOR_VERSION} - --build-arg IP6_VERSION=${IP6_VERSION} - --build-arg JUG_VERSION=${INTERNAL_TAG}-$(git rev-parse HEAD) - containers/jug - - !reference [.build, script] - -jug_xl:nightly: - extends: .build - stage: build:release - interruptible: true - resource_group: build - rules: - - if: '$CI_COMMIT_BRANCH == "master"' - when: on_success - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: on_success - - when: never - needs: - - version - - jug_dev:default - variables: - BUILD_IMAGE: "jug_xl" - script: - - docker build -t ${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${NIGHTLY_TAG} - -f containers/jug/xl.Dockerfile - --build-arg INTERNAL_TAG=${INTERNAL_TAG} - --build-arg JUG_VERSION=nightly-$(date +%Y-%m-%d_%H-%M-%S)-$(git rev-parse HEAD) - containers/jug - - | - PUSH_FLAG="" - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then - PUSH_FLAG="--eicweb" - fi - - ./gitlab-ci/docker_push.sh -i ${BUILD_IMAGE} -l ${NIGHTLY_TAG} - -n $DOCKER_NTRIES -t $DOCKER_WAIT_TIME - ${NIGHTLY_TAG} ${PUSH_FLAG} - .singularity: stage: deploy interruptible: true @@ -296,79 +196,13 @@ jug_xl:nightly: - mkdir build - singularity pull build/${BUILD_IMAGE}.sif docker://${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${INTERNAL_TAG} -jug_dev:singularity:default: +acts_material_scan:singularity:default: extends: .singularity needs: - version - jug_dev:default variables: - BUILD_IMAGE: "jug_dev" - -jug_xl:singularity:default: - extends: .singularity - needs: - - version - - jug_xl:default - variables: - BUILD_IMAGE: "jug_xl" - -jug_xl:singularity:nightly: - stage: deploy - interruptible: true - needs: - - version - - jug_xl:nightly - rules: - - if: '$CI_COMMIT_BRANCH == "master"' - when: on_success - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: on_success - - when: never - artifacts: - expire_in: 1 days - paths: - - build/${BUILD_IMAGE}.sif - variables: - BUILD_IMAGE: "jug_xl" - script: - - mkdir build - - singularity pull build/${BUILD_IMAGE}.sif docker://${CI_REGISTRY_IMAGE}/${BUILD_IMAGE}:${NIGHTLY_TAG} - -## trigger juggler rebuild on nightly schedule to ensure both images remain in sync -juggler:master: - stage: deploy - rules: - - if: '$NIGHTLY != "0" && $CI_COMMIT_BRANCH == "master"' - when: on_success - - when: never - needs: - - version - - jug_xl:nightly - variables: - TRIGGERED_BY_NIGHTLY: 1 - JUGGLER_VERSION: master - EICD_VERSION: master - NPDET_VERSION: master - DETECTOR_VERSION: master - IP6_VERSION: master - trigger: - project: EIC/juggler - allow_failure: true - -.test: - stage: test - needs: - - version - - jug_xl:singularity:nightly - rules: - - if: '$CI_COMMIT_BRANCH == "master"' - when: on_success - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - when: on_success - - when: never - -include: - - local: 'tests/tutorial/config.yml' + BUILD_IMAGE: "acts_material_scan" cleanup: stage: finalize @@ -378,9 +212,4 @@ cleanup: ## remove the pipeline specific export from eicweb if needed - echo "Cleaning up pipeline specific docker tags if needed" - ./gitlab-ci/cleanup_registry.sh -i debian_base -r 66 ${INTERNAL_TAG} - - ./gitlab-ci/cleanup_registry.sh -i jug_dev -r 68 ${INTERNAL_TAG} - - ./gitlab-ci/cleanup_registry.sh -i jug_xl -r 69 ${INTERNAL_TAG} - - | - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then - ./gitlab-ci/cleanup_registry.sh -i jug_xl -r 69 ${NIGHTLY_TAG} - fi + - ./gitlab-ci/cleanup_registry.sh -i acts_material_scan -r 70 ${INTERNAL_TAG} diff --git a/spack.yaml b/spack.yaml index 104f112a219a782e14d50c8417ad55a88e1960fb..6c0cf6623dc8b7db041a10b52d5e55368ad4eb4c 100644 --- a/spack.yaml +++ b/spack.yaml @@ -23,7 +23,7 @@ spack: - stow@2.3.1 - cairo@1.16.0 +fc+ft+X+pdf+gobject - podio@0.13.1 - - geant4@10.7.1 cxxstd=17 +opengl +vecgeom +x11 +qt +threads ^qt +opengl + - geant4@10.7.1 cxxstd=17 +opengl +vecgeom +x11 +qt -threads ^qt +opengl - dd4hep@1.17p1 +geant4 +assimp +hepmc3 +ipo +lcio - acts@8.03.0p1 +dd4hep +digitization +identification +json +tgeo +ipo +examples +fatras +geant4 - genfit@2.00.00