From 0e0877fef9bc0cbab0a26f863a729cee90975bc7 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 10:26:21 +0100 Subject: [PATCH 01/19] Fix version setting for CORSIKA configuration repo --- docker/Dockerfile-corsika7 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile-corsika7 b/docker/Dockerfile-corsika7 index 701d71c35c..06485dfbd8 100644 --- a/docker/Dockerfile-corsika7 +++ b/docker/Dockerfile-corsika7 @@ -39,7 +39,7 @@ WORKDIR /src # Clone CORSIKA configuration files from CTAO gitlab RUN git config --global advice.detachedHead false && \ - git clone --depth 1 --branch "${CORSIKA_VERSION}" "http://${CORSIKA_CONFIG_REPO}" && \ + git clone --depth 1 --branch "${CORSIKA_CONFIG_VERSION}" "http://${CORSIKA_CONFIG_REPO}" && \ cp -v corsika7-config/config/${CORSIKA_VERSION}/*.h . && \ rm -rf corsika7-config From 62cc589e29a26ae67a46e81f5ce42ff17050bab3 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 10:44:08 +0100 Subject: [PATCH 02/19] add simtel versions to image tag --- .github/workflows/build-sim_telarray.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-sim_telarray.yml b/.github/workflows/build-sim_telarray.yml index a0f4c2f62b..df8086c468 100644 --- a/.github/workflows/build-sim_telarray.yml +++ b/.github/workflows/build-sim_telarray.yml @@ -32,7 +32,7 @@ jobs: - {build_opt: 'prod6-baseline', extra_def: '-DMAXIMUM_TELESCOPES=99'} env: - BASE_LABELS: "simtel-${{ matrix.version.simtel_version }}-${{ matrix.production.build_opt }}" + BASE_LABELS: "simtel-${{ matrix.production.build_opt }}" steps: - name: Checkout repository @@ -54,9 +54,10 @@ jobs: with: tags: | type=ref,event=pr - type=semver,pattern={{major}}.{{minor}}.{{patch}} - type=schedule,pattern={{date 'YYYYMMDD'}} + type=semver,pattern={{major}}.{{minor}}.{{patch}}-simtel-${{ matrix.version.simtel_version }} + type=schedule,pattern={{date 'YYYYMMDD'}}-simtel-${{ matrix.version.simtel_version }} type=raw,value={{date 'YYYYMMDD-HHmmss'}} + type=raw,value=simtel-${{ matrix.version.simtel_version }} images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABELS }} flavor: latest=true From 7a4954920e451d1e33453092019f37365ce0954f Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 10:59:36 +0100 Subject: [PATCH 03/19] base tags --- .github/workflows/build-corsika7.yml | 15 ++++++++------- .github/workflows/build-sim_telarray.yml | 16 ++++++++-------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-corsika7.yml b/.github/workflows/build-corsika7.yml index 5161f7d964..d6458639df 100644 --- a/.github/workflows/build-corsika7.yml +++ b/.github/workflows/build-corsika7.yml @@ -50,7 +50,8 @@ jobs: - {corsika_version: '78010', avx_instruction: 'sse4'} env: - BASE_LABELS: "corsika7-${{ matrix.version.corsika_version }}-${{ matrix.version.avx_instruction }}" + BASE_LABEL: "corsika7" + BASE_TAG: "${{ matrix.version.corsika_version }}-${{ matrix.version.avx_instruction }}" steps: - name: Checkout repository @@ -77,11 +78,11 @@ jobs: uses: docker/metadata-action@v5 with: tags: | - type=ref,event=pr - type=semver,pattern={{major}}.{{minor}}.{{patch}} - type=schedule,pattern={{date 'YYYYMMDD'}} - type=raw,value={{date 'YYYYMMDD-HHmmss'}} - images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABELS }} + type=ref,event=pr,suffix=-${{ env.BASE_TAG }} + type=semver,pattern={{major}}.{{minor}}.{{patch}}-${{ env.BASE_TAG }} + type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} + type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} + images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} flavor: latest=true - name: Build and push @@ -102,5 +103,5 @@ jobs: - name: Output image information run: | - echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABELS }}:latest" + echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }}:latest" echo "Image tags: ${{ steps.meta-base.outputs.tags }}" diff --git a/.github/workflows/build-sim_telarray.yml b/.github/workflows/build-sim_telarray.yml index df8086c468..61b52d1e91 100644 --- a/.github/workflows/build-sim_telarray.yml +++ b/.github/workflows/build-sim_telarray.yml @@ -32,7 +32,8 @@ jobs: - {build_opt: 'prod6-baseline', extra_def: '-DMAXIMUM_TELESCOPES=99'} env: - BASE_LABELS: "simtel-${{ matrix.production.build_opt }}" + BASE_LABEL: "simtel-${{ matrix.production.build_opt }}" + BASE_TAG: "simtel-${{ matrix.version.simtel_version }}" steps: - name: Checkout repository @@ -53,12 +54,11 @@ jobs: uses: docker/metadata-action@v5 with: tags: | - type=ref,event=pr - type=semver,pattern={{major}}.{{minor}}.{{patch}}-simtel-${{ matrix.version.simtel_version }} - type=schedule,pattern={{date 'YYYYMMDD'}}-simtel-${{ matrix.version.simtel_version }} - type=raw,value={{date 'YYYYMMDD-HHmmss'}} - type=raw,value=simtel-${{ matrix.version.simtel_version }} - images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABELS }} + type=ref,event=pr,suffix=-${{ env.BASE_TAG }} + type=semver,pattern={{major}}.{{minor}}.{{patch}}-${{ env.BASE_TAG }} + type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} + type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} + images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} flavor: latest=true - name: Build /sim_telarray image @@ -82,5 +82,5 @@ jobs: - name: Output image information run: | - echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABELS }}:latest" + echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }}:latest" echo "Image tags: ${{ steps.meta-base.outputs.tags }}" From 921ceb2a9eead2c1ee294540931bebdd79a4b509 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 11:15:43 +0100 Subject: [PATCH 04/19] Docker files prod improvement and tagging --- .github/workflows/build-corsika7.yml | 3 +- .github/workflows/build-simtools-dev.yml | 10 +++--- .github/workflows/build-simtools-legacy.yml | 6 ++-- docker/Dockerfile-simtools-dev | 19 ++++------- docker/Dockerfile-simtools-legacy | 14 ++++---- docker/Dockerfile-simtools-prod | 37 ++++++++------------- 6 files changed, 38 insertions(+), 51 deletions(-) diff --git a/.github/workflows/build-corsika7.yml b/.github/workflows/build-corsika7.yml index d6458639df..2ef30f37a8 100644 --- a/.github/workflows/build-corsika7.yml +++ b/.github/workflows/build-corsika7.yml @@ -4,6 +4,7 @@ name: build-corsika7 # The no_opt (non-optimized) images are built as multi-platform images (x86_64 and arm64). # # The images are built and pushed when manually triggered (workflow_dispatch). +# on: workflow_dispatch: @@ -83,7 +84,7 @@ jobs: type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} - flavor: latest=true + flavor: latest=false - name: Build and push uses: docker/build-push-action@v6 diff --git a/.github/workflows/build-simtools-dev.yml b/.github/workflows/build-simtools-dev.yml index b47d9268f3..3e8ff7aafb 100644 --- a/.github/workflows/build-simtools-dev.yml +++ b/.github/workflows/build-simtools-dev.yml @@ -57,11 +57,11 @@ jobs: - name: Set build arguments (correct branch) run: | if [[ "${{ github.event_name }}" == 'pull_request' ]]; then - echo "BUILD_BRANCH=${GITHUB_HEAD_REF}" >> "$GITHUB_ENV" + echo "SIMTOOLS_BRANCH=${GITHUB_HEAD_REF}" >> "$GITHUB_ENV" else - echo "BUILD_BRANCH=${GITHUB_REF#refs/heads/}" >> "$GITHUB_ENV" + echo "SIMTOOLS_BRANCH=${GITHUB_REF#refs/heads/}" >> "$GITHUB_ENV" fi - echo "BUILD BRANCH ${{ env.BUILD_BRANCH }}" + echo "BUILD BRANCH ${{ env.SIMTOOLS_BRANCH }}" - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -92,7 +92,7 @@ jobs: uses: docker/build-push-action@v6 with: context: . - build-args: BUILD_BRANCH=${{ env.BUILD_BRANCH }} + build-args: SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} load: true file: ./docker/Dockerfile-simtools-${{ matrix.type }} tags: ${{ env.TEST_TAG }} @@ -102,7 +102,7 @@ jobs: with: context: . platforms: linux/amd64,linux/arm64/v8 - build-args: BUILD_BRANCH=${{ env.BUILD_BRANCH }} + build-args: SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} push: ${{ github.event_name == 'release' || github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-simtools-${{ matrix.type }} tags: ${{ steps.meta.outputs.tags }} diff --git a/.github/workflows/build-simtools-legacy.yml b/.github/workflows/build-simtools-legacy.yml index 91f71ec900..cfbda395a2 100644 --- a/.github/workflows/build-simtools-legacy.yml +++ b/.github/workflows/build-simtools-legacy.yml @@ -55,9 +55,9 @@ jobs: - name: Set build branch run: | if [[ "${{ github.event_name }}" == 'pull_request' ]]; then - echo "BUILD_BRANCH=${GITHUB_HEAD_REF}" >> "$GITHUB_ENV" + echo "SIMTOOLS_BRANCH=${GITHUB_HEAD_REF}" >> "$GITHUB_ENV" else - echo "BUILD_BRANCH=${GITHUB_REF#refs/heads/}" >> "$GITHUB_ENV" + echo "SIMTOOLS_BRANCH=${GITHUB_REF#refs/heads/}" >> "$GITHUB_ENV" fi - name: Set up Docker Buildx @@ -89,7 +89,7 @@ jobs: platforms: linux/amd64 build-args: | BASE_IMAGE=${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABELS }}:latest - BUILD_BRANCH=${{ env.BUILD_BRANCH }} + SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} push: ${{ github.event_name == 'release' || github.event.pull_request.merged == true || github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-simtools-legacy tags: ${{ steps.meta-simtools.outputs.tags }} diff --git a/docker/Dockerfile-simtools-dev b/docker/Dockerfile-simtools-dev index 2a57b14109..ef0edab001 100644 --- a/docker/Dockerfile-simtools-dev +++ b/docker/Dockerfile-simtools-dev @@ -1,6 +1,6 @@ # Dockerfile for simtools development. # -# Uses CORSIKA (no vector optimization) and sim_telarray images. +# Uses CORSIKA (no vector optimization) and sim_telarray pre-built images. # # Minimal CORSIKA version is 7.8x (otherwise QGSJet-II tables need to be added) # @@ -11,26 +11,21 @@ # hadolint global ignore=DL3013,DL3041 # - DL3013, DL3041: ignore warnings about using latest -ARG CORSIKA_VERSION="78010" -ARG CORSIKA_IMAGE_VERSION="latest" -ARG SIMTEL_VERSION="251124" +ARG CORSIKA_IMAGE_VERSION="pr-1954-78010" ARG SIMTEL_BUILD_OPT="prod6-baseline" ARG SIMTEL_IMAGE_VERSION="latest" ARG AVX_INSTRUCTION="no_opt" -ARG PYTHON_VERSION="3.12" -ARG SIMTOOLS_REQUIREMENT="https://github.com/gammasim/simtools.git" +ARG PYTHON_VERSION="3.13" +ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" -FROM ghcr.io/gammasim/corsika7-${CORSIKA_VERSION}-${AVX_INSTRUCTION}:${CORSIKA_IMAGE_VERSION} AS corsika_img -FROM ghcr.io/gammasim/simtel-${SIMTEL_VERSION}-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img +FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_INSTRUCTION} AS corsika_img +FROM ghcr.io/gammasim/simtel-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img FROM almalinux:9.5-minimal ARG PYTHON_VERSION -ARG SIMTOOLS_REQUIREMENT +ARG SIMTOOLS_REPO -# Copy CORSIKA from corsika image COPY --from=corsika_img /workdir/simulation_software/corsika7 /workdir/simulation_software/corsika7 - -# Copy sim_telarray components from simtel image COPY --from=simtel_img /workdir/simulation_software/sim_telarray /workdir/simulation_software/sim_telarray COPY --from=simtel_img /workdir/simulation_software/hessioxxx /workdir/simulation_software/hessioxxx COPY --from=simtel_img /workdir/simulation_software/stdtools /workdir/simulation_software/stdtools diff --git a/docker/Dockerfile-simtools-legacy b/docker/Dockerfile-simtools-legacy index 24ab0cb4fc..bbf6187a72 100644 --- a/docker/Dockerfile-simtools-legacy +++ b/docker/Dockerfile-simtools-legacy @@ -10,13 +10,13 @@ # - SC1091: ignore warning about not being able to source the bashrc ARG BASE_IMAGE -ARG BUILD_BRANCH=main -ARG SIMTOOLS_REQUIREMENT="https://github.com/gammasim/simtools.git" +ARG SIMTOOLS_BRANCH=main +ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" ARG PYTHON_VERSION=3.12 FROM ${BASE_IMAGE} -ARG BUILD_BRANCH -ARG SIMTOOLS_REQUIREMENT +ARG SIMTOOLS_BRANCH +ARG SIMTOOLS_REPO ARG PYTHON_VERSION SHELL ["/bin/bash", "-o", "pipefail", "-c"] @@ -28,12 +28,12 @@ RUN microdnf update -y && microdnf install -y \ rm -rf /var/cache/dnf/* /tmp/* /var/tmp/* && \ ln -sf /usr/bin/python${PYTHON_VERSION} /usr/bin/python -RUN BUILD_BRANCH=${BUILD_BRANCH//refs\/tags\//} \ - && git clone -b "$BUILD_BRANCH" "${SIMTOOLS_REQUIREMENT}" --depth 1 \ +RUN SIMTOOLS_BRANCH=${SIMTOOLS_BRANCH//refs\/tags\//} \ + && git clone -b "$SIMTOOLS_BRANCH" "${SIMTOOLS_REPO}" --depth 1 \ && python${PYTHON_VERSION} -m venv env \ && . env/bin/activate \ && pip install --no-cache-dir -U pip \ - && pip install --no-cache-dir "git+${SIMTOOLS_REQUIREMENT}@${BUILD_BRANCH}" \ + && pip install --no-cache-dir "git+${SIMTOOLS_REPO}@${SIMTOOLS_BRANCH}" \ && pip cache purge && rm -rf /root/.cache \ && echo ". /workdir/env/bin/activate" >> ~/.bashrc diff --git a/docker/Dockerfile-simtools-prod b/docker/Dockerfile-simtools-prod index 435ff830f8..8208782637 100644 --- a/docker/Dockerfile-simtools-prod +++ b/docker/Dockerfile-simtools-prod @@ -1,35 +1,26 @@ -# Dockerfile for simtools development. +# Dockerfile for simtools production. # -# Uses CORSIKA (no vector optimization) and sim_telarray images. -# -# Minimal CORSIKA version is 7.8x (otherwise QGSJet-II tables need to be added) -# -# All dependencies for simtools are installed, but not simtools itself. -# It is expected that simtools is installed in an external directory -# mounted in the container. +# Uses CORSIKA (no vector optimization) and sim_telarray pre-built images. +# No QGSJet tables are included. # # hadolint global ignore=DL3013,DL3041 # - DL3013, DL3041: ignore warnings about using latest -ARG CORSIKA_VERSION="78010" -ARG CORSIKA_IMAGE_VERSION="latest" -ARG SIMTEL_VERSION="251124" +ARG CORSIKA_IMAGE_VERSION="pr-1954-78010" ARG SIMTEL_BUILD_OPT="prod6-baseline" ARG SIMTEL_IMAGE_VERSION="latest" ARG AVX_INSTRUCTION="no_opt" -ARG PYTHON_VERSION="3.12" -ARG BUILD_BRANCH=main -ARG SIMTOOLS_REQUIREMENT="https://github.com/gammasim/simtools.git" +ARG PYTHON_VERSION="3.13" +ARG SIMTOOLS_BRANCH=main +ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" -ARG CORSIKA_VERSION ARG CORSIKA_IMAGE_VERSION ARG AVX_INSTRUCTION -FROM ghcr.io/gammasim/corsika7-${CORSIKA_VERSION}-${AVX_INSTRUCTION}:${CORSIKA_IMAGE_VERSION} AS corsika_img -ARG SIMTEL_VERSION ARG SIMTEL_IMAGE_VERSION ARG SIMTEL_BUILD_OPT -FROM ghcr.io/gammasim/simtel-${SIMTEL_VERSION}-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img +FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_INSTRUCTION} AS corsika_img +FROM ghcr.io/gammasim/simtel-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img FROM almalinux:9.5-minimal -ARG BUILD_BRANCH -ARG SIMTOOLS_REQUIREMENT ARG PYTHON_VERSION +ARG SIMTOOLS_BRANCH +ARG SIMTOOLS_REPO COPY --from=corsika_img /workdir/simulation_software/corsika7 /workdir/simulation_software/corsika7 COPY --from=simtel_img /workdir/simulation_software/sim_telarray /workdir/simulation_software/sim_telarray @@ -46,12 +37,12 @@ RUN microdnf update -y && microdnf install -y \ WORKDIR /workdir # hadolint ignore=DL4006 -RUN BUILD_BRANCH="$(printf '%s' "$BUILD_BRANCH" | sed 's#refs/tags/##')" \ - && git clone -b "$BUILD_BRANCH" "${SIMTOOLS_REQUIREMENT}" --depth 1 \ +RUN SIMTOOLS_BRANCH="$(printf '%s' "$SIMTOOLS_BRANCH" | sed 's#refs/tags/##')" \ + && git clone -b "$SIMTOOLS_BRANCH" "${SIMTOOLS_REPO}" --depth 1 \ && python${PYTHON_VERSION} -m venv env \ && . env/bin/activate \ && pip install --no-cache-dir -U pip \ - && pip install --no-cache-dir "git+${SIMTOOLS_REQUIREMENT}@${BUILD_BRANCH}" \ + && pip install --no-cache-dir "git+${SIMTOOLS_REPO}@${SIMTOOLS_BRANCH}" \ && pip cache purge && rm -rf /root/.cache \ && echo ". /workdir/env/bin/activate" >> ~/.bashrc From b993820af5a9e639bf78f3088c4cecb19bd5739a Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 11:21:49 +0100 Subject: [PATCH 05/19] legacy renaming --- .../{build-corsika-simtel.yml => build-corsika-simtel-legacy.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{build-corsika-simtel.yml => build-corsika-simtel-legacy.yml} (100%) diff --git a/.github/workflows/build-corsika-simtel.yml b/.github/workflows/build-corsika-simtel-legacy.yml similarity index 100% rename from .github/workflows/build-corsika-simtel.yml rename to .github/workflows/build-corsika-simtel-legacy.yml From eb5d5ca00d460cdacde2f29e2f12e9d9eb66c027 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 11:22:52 +0100 Subject: [PATCH 06/19] legacy builds --- .github/workflows/build-corsika-simtel-legacy.yml | 3 ++- .github/workflows/build-simtools-legacy.yml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-corsika-simtel-legacy.yml b/.github/workflows/build-corsika-simtel-legacy.yml index 3c3fdf47ad..f20019218f 100644 --- a/.github/workflows/build-corsika-simtel-legacy.yml +++ b/.github/workflows/build-corsika-simtel-legacy.yml @@ -1,5 +1,6 @@ --- -name: build-corsika-simtel +name: build-corsika-simtel-legacy +# **legacy build** - will be deprecated in near futurebuild-simtools-legacy.yml # Build and push CORSIKA / sim_telarray base images for different CPU architectures. # The no_opt (non-optimized) images are built as multi-platform images (x86_64 and arm64). # diff --git a/.github/workflows/build-simtools-legacy.yml b/.github/workflows/build-simtools-legacy.yml index cfbda395a2..33eb10abaa 100644 --- a/.github/workflows/build-simtools-legacy.yml +++ b/.github/workflows/build-simtools-legacy.yml @@ -1,5 +1,6 @@ --- name: build-simtools-legacy +# **legacy build** - will be deprecated in near future # Build and push simtools images using CORSIKA / sim_telarray base images. # Integration tests are running on the non-optimized ('no_opt') images. From 6ff8c0453ce17c464742127aa24b1e3f2eb5a7d5 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 11:23:05 +0100 Subject: [PATCH 07/19] legacy builds --- .github/workflows/build-corsika-simtel-legacy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-corsika-simtel-legacy.yml b/.github/workflows/build-corsika-simtel-legacy.yml index f20019218f..4939353e0f 100644 --- a/.github/workflows/build-corsika-simtel-legacy.yml +++ b/.github/workflows/build-corsika-simtel-legacy.yml @@ -1,6 +1,6 @@ --- name: build-corsika-simtel-legacy -# **legacy build** - will be deprecated in near futurebuild-simtools-legacy.yml +# **legacy build** - will be deprecated in near future # Build and push CORSIKA / sim_telarray base images for different CPU architectures. # The no_opt (non-optimized) images are built as multi-platform images (x86_64 and arm64). # From 9ff1e7eaff3e6f45e950becc8493d0a52f042fd6 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 11:23:18 +0100 Subject: [PATCH 08/19] typos --- .github/workflows/build-sim_telarray.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-sim_telarray.yml b/.github/workflows/build-sim_telarray.yml index 61b52d1e91..a3e9062717 100644 --- a/.github/workflows/build-sim_telarray.yml +++ b/.github/workflows/build-sim_telarray.yml @@ -49,7 +49,7 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata for sim_telarray image (tags, labels) + - name: Extract metadata id: meta-base uses: docker/metadata-action@v5 with: @@ -72,9 +72,9 @@ jobs: STDTOOLS_VERSION=${{ matrix.version.stdtools_version }} EXTRA_DEF=${{ matrix.production.extra_def }} secrets: | - sim_telarray_token=${{ secrets.SIMTELARRAY_CTAO_GITLAB}} - hessio_token=${{ secrets.HESSIO_CTAO_GITLAB}} - stdtools_token=${{ secrets.STDTOOLS_CTAO_GITLAB}} + sim_telarray_token=${{ secrets.SIMTELARRAY_CTAO_GITLAB }} + hessio_token=${{ secrets.HESSIO_CTAO_GITLAB }} + stdtools_token=${{ secrets.STDTOOLS_CTAO_GITLAB }} push: ${{ github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-simtel_array tags: ${{ steps.meta-base.outputs.tags }} From b2b01bde6649f4d8041e88d0d3d8fe93a5b3fc7a Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 12:24:04 +0100 Subject: [PATCH 09/19] production docker file --- .../workflows/build-corsika-simtel-legacy.yml | 24 +++--- .github/workflows/build-corsika7.yml | 23 +++-- .github/workflows/build-simtools-dev.yml | 9 -- .github/workflows/build-simtools-legacy.yml | 34 ++++---- .github/workflows/build-simtools-prod.yml | 83 +++++++++++++++++++ docker/Dockerfile-simtools-dev | 4 +- docker/Dockerfile-simtools-prod | 7 +- 7 files changed, 128 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/build-simtools-prod.yml diff --git a/.github/workflows/build-corsika-simtel-legacy.yml b/.github/workflows/build-corsika-simtel-legacy.yml index 4939353e0f..92c7c43b27 100644 --- a/.github/workflows/build-corsika-simtel-legacy.yml +++ b/.github/workflows/build-corsika-simtel-legacy.yml @@ -74,22 +74,22 @@ jobs: matrix: version: # list of avx instructions: 'avx2', 'avx512f', 'sse4', 'avx' - - {simtel_version: '240205', corsika_version: '77500', bernlohr_version: '1.67', hadronic_model: 'qgs2', avx_instruction: 'no_opt'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'no_opt'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'avx2'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'avx512f'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'sse4'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'no_opt'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'avx2'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'avx512f'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'sse4'} + - {simtel_version: '240205', corsika_version: '77500', bernlohr_version: '1.67', hadronic_model: 'qgs2', avx_flag: 'no_opt'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'no_opt'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'avx2'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'avx512f'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'sse4'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'no_opt'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'avx2'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'avx512f'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'sse4'} production: # list of productions build options: 'prod6-sc', 'prod6-baseline', 'prod5', 'prod5-sc' # - {build_opt: 'prod6-sc', extra_def: ''} # currently not used - {build_opt: 'prod6-baseline', extra_def: ''} env: - BASE_LABELS: "corsika-simtel-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_instruction }}" + BASE_LABELS: "corsika-simtel-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_flag }}" steps: - name: Checkout repository @@ -145,12 +145,12 @@ jobs: with: context: . # Build multi-platform only for no_opt (non-optimized) variant, others are x86-specific - platforms: ${{ matrix.version.avx_instruction == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} + platforms: ${{ matrix.version.avx_flag == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} build-args: | BUILD_OPT=${{ matrix.production.build_opt }} EXTRA_DEF=${{ matrix.production.extra_def }} HADRONIC_MODEL=${{ matrix.version.hadronic_model }} - AVX_FLAG=${{ matrix.version.avx_instruction }} + AVX_FLAG=${{ matrix.version.avx_flag }} CORSIKA_VERSION=${{ matrix.version.corsika_version }} BERNLOHR_VERSION=${{ matrix.version.bernlohr_version }} secrets: | diff --git a/.github/workflows/build-corsika7.yml b/.github/workflows/build-corsika7.yml index 2ef30f37a8..565181e984 100644 --- a/.github/workflows/build-corsika7.yml +++ b/.github/workflows/build-corsika7.yml @@ -45,14 +45,13 @@ jobs: strategy: matrix: version: - - {corsika_version: '78010', avx_instruction: 'no_opt'} - - {corsika_version: '78010', avx_instruction: 'avx2'} - - {corsika_version: '78010', avx_instruction: 'avx512f'} - - {corsika_version: '78010', avx_instruction: 'sse4'} - + - {corsika_version: '78010', avx_flag: 'no_opt'} + - {corsika_version: '78010', avx_flag: 'avx2'} + - {corsika_version: '78010', avx_flag: 'avx512f'} + - {corsika_version: '78010', avx_flag: 'sse4'} env: BASE_LABEL: "corsika7" - BASE_TAG: "${{ matrix.version.corsika_version }}-${{ matrix.version.avx_instruction }}" + BASE_TAG: "${{ matrix.version.corsika_version }}-${{ matrix.version.avx_flag }}" steps: - name: Checkout repository @@ -75,7 +74,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata - id: meta-base + id: meta uses: docker/metadata-action@v5 with: tags: | @@ -91,18 +90,18 @@ jobs: with: context: . # Build multi-platform only for no_opt (non-optimized) variant, others are x86-specific - platforms: ${{ matrix.version.avx_instruction == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} + platforms: ${{ matrix.version.avx_flag == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} build-args: | - AVX_FLAG=${{ matrix.version.avx_instruction }} + AVX_FLAG=${{ matrix.version.avx_flag }} CORSIKA_VERSION=${{ matrix.version.corsika_version }} secrets: | corsika7_token=${{ secrets.CORSIKA7_KIT_GITLAB }} push: ${{ github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-corsika7 - tags: ${{ steps.meta-base.outputs.tags }} - labels: ${{ steps.meta-base.outputs.labels }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} - name: Output image information run: | echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }}:latest" - echo "Image tags: ${{ steps.meta-base.outputs.tags }}" + echo "Image tags: ${{ steps.meta.outputs.tags }}" diff --git a/.github/workflows/build-simtools-dev.yml b/.github/workflows/build-simtools-dev.yml index 3e8ff7aafb..691bf18853 100644 --- a/.github/workflows/build-simtools-dev.yml +++ b/.github/workflows/build-simtools-dev.yml @@ -88,15 +88,6 @@ jobs: images: ${{ env.REGISTRY }}/gammasim/simtools-${{ matrix.type }} flavor: latest=true - - name: Build Docker image - uses: docker/build-push-action@v6 - with: - context: . - build-args: SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} - load: true - file: ./docker/Dockerfile-simtools-${{ matrix.type }} - tags: ${{ env.TEST_TAG }} - - name: Build and push image uses: docker/build-push-action@v6 with: diff --git a/.github/workflows/build-simtools-legacy.yml b/.github/workflows/build-simtools-legacy.yml index 33eb10abaa..4d3fe76665 100644 --- a/.github/workflows/build-simtools-legacy.yml +++ b/.github/workflows/build-simtools-legacy.yml @@ -31,23 +31,23 @@ jobs: matrix: version: # list of avx instructions: 'avx2', 'avx512f', 'sse4', 'avx' - - {simtel_version: '240205', corsika_version: '77500', bernlohr_version: '1.67', hadronic_model: 'qgs2', avx_instruction: 'no_opt'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'no_opt'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'avx2'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'avx512f'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'sse4'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'no_opt'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'avx2'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'avx512f'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'sse4'} + - {simtel_version: '240205', corsika_version: '77500', bernlohr_version: '1.67', hadronic_model: 'qgs2', avx_flag: 'no_opt'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'no_opt'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'avx2'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'avx512f'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'sse4'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'no_opt'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'avx2'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'avx512f'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'sse4'} production: # list of productions build options: 'prod6-sc', 'prod6-baseline', 'prod5', 'prod5-sc' # - {build_opt: 'prod6-sc', extra_def: ''} # currently not used - {build_opt: 'prod6-baseline', extra_def: ''} env: - BASE_LABELS: "corsika-simtel-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_instruction }}" - SIMTOOLS_LABELS: "simtools-sim-telarray-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_instruction }}" + BASE_LABELS: "corsika-simtel-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_flag }}" + SIMTOOLS_LABELS: "simtools-sim-telarray-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_flag }}" steps: - name: Checkout repository @@ -103,11 +103,11 @@ jobs: matrix: version: # list of avx instructions: 'avx2', 'avx512f', 'sse4', 'avx' - - {simtel_version: '240205', corsika_version: '77500', bernlohr_version: '1.67', hadronic_model: 'qgs2', avx_instruction: 'no_opt'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'no_opt'} - - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_instruction: 'avx2'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'no_opt'} - - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_instruction: 'avx2'} + - {simtel_version: '240205', corsika_version: '77500', bernlohr_version: '1.67', hadronic_model: 'qgs2', avx_flag: 'no_opt'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'no_opt'} + - {simtel_version: '240927', corsika_version: '77550', bernlohr_version: '1.68', hadronic_model: 'qgs2', avx_flag: 'avx2'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'no_opt'} + - {simtel_version: '250903', corsika_version: '78010', bernlohr_version: '1.70', hadronic_model: 'qgs3', avx_flag: 'avx2'} production: # list of productions build options: 'prod6-sc', 'prod6-baseline', 'prod5', 'prod5-sc' # - {build_opt: 'prod6-sc', extra_def: ''} # currently not used @@ -115,7 +115,7 @@ jobs: model_version: - "6.0.2" container: - image: ghcr.io/gammasim/simtools-sim-telarray-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_instruction }} + image: ghcr.io/gammasim/simtools-sim-telarray-${{ matrix.version.simtel_version }}-corsika-${{ matrix.version.corsika_version }}-bernlohr-${{ matrix.version.bernlohr_version }}-${{ matrix.production.build_opt }}-${{ matrix.version.hadronic_model }}-${{ matrix.version.avx_flag }} options: --user 0 services: diff --git a/.github/workflows/build-simtools-prod.yml b/.github/workflows/build-simtools-prod.yml new file mode 100644 index 0000000000..016be05cc7 --- /dev/null +++ b/.github/workflows/build-simtools-prod.yml @@ -0,0 +1,83 @@ +--- +name: build-simtools-prod +# Build simtools production images based on CORSIKA / sim_telarray images + +on: + workflow_dispatch: + pull_request: + paths: + - docker/Dockerfile-simtools-prod + release: + types: [published] + schedule: + - cron: '0 0 * * 0' # Every Sunday at 00:00 UTC (build only) + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-simtools-images: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + strategy: + matrix: + version: + - {corsika_image: '78010', avx_flag: 'no_opt', simtel_image: 'latest'} + env: + BASE_LABEL: "simtools" + BASE_TAG: "corsika${{ matrix.version.corsika_image }}-${{ matrix.version.avx_flag }}-simtel${{ matrix.version.simtel_image }}" + + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Set build branch + run: | + if [[ "${{ github.event_name }}" == 'pull_request' ]]; then + echo "SIMTOOLS_BRANCH=${GITHUB_HEAD_REF}" >> "$GITHUB_ENV" + else + echo "SIMTOOLS_BRANCH=${GITHUB_REF#refs/heads/}" >> "$GITHUB_ENV" + fi + echo "BUILD BRANCH ${{ env.SIMTOOLS_BRANCH }}" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + tags: | + type=ref,event=pr,suffix=-${{ env.BASE_TAG }} + type=semver,pattern={{major}}.{{minor}}.{{patch}}-${{ env.BASE_TAG }} + type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} + type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} + images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} + flavor: latest=true + + - name: Build and push + uses: docker/build-push-action@v6 + with: + context: . + # Build multi-platform only for no_opt (non-optimized) variant, others are x86-specific + platforms: ${{ matrix.version.avx_flag == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} + build-args: | + CORSIKA_IMAGE_VERSION=${{ matrix.version.corsika_image }} + SIMTEL_BUILD_OPT=prod6-baseline + SIMTEL_IMAGE_VERSION=${{ matrix.version.simtel_image }} + AVX_FLAG=${{ matrix.version.avx_flag }} + SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} + file: ./docker/Dockerfile-simtools-prod + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: ${{ github.event_name == 'release' || github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} diff --git a/docker/Dockerfile-simtools-dev b/docker/Dockerfile-simtools-dev index ef0edab001..fed364ce8c 100644 --- a/docker/Dockerfile-simtools-dev +++ b/docker/Dockerfile-simtools-dev @@ -14,11 +14,11 @@ ARG CORSIKA_IMAGE_VERSION="pr-1954-78010" ARG SIMTEL_BUILD_OPT="prod6-baseline" ARG SIMTEL_IMAGE_VERSION="latest" -ARG AVX_INSTRUCTION="no_opt" +ARG AVX_FLAG="no_opt" ARG PYTHON_VERSION="3.13" ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" -FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_INSTRUCTION} AS corsika_img +FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_FLAG} AS corsika_img FROM ghcr.io/gammasim/simtel-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img FROM almalinux:9.5-minimal diff --git a/docker/Dockerfile-simtools-prod b/docker/Dockerfile-simtools-prod index 8208782637..e4c419fac7 100644 --- a/docker/Dockerfile-simtools-prod +++ b/docker/Dockerfile-simtools-prod @@ -9,18 +9,17 @@ ARG CORSIKA_IMAGE_VERSION="pr-1954-78010" ARG SIMTEL_BUILD_OPT="prod6-baseline" ARG SIMTEL_IMAGE_VERSION="latest" -ARG AVX_INSTRUCTION="no_opt" +ARG AVX_FLAG="no_opt" ARG PYTHON_VERSION="3.13" ARG SIMTOOLS_BRANCH=main -ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" -FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_INSTRUCTION} AS corsika_img +FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_FLAG} AS corsika_img FROM ghcr.io/gammasim/simtel-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img FROM almalinux:9.5-minimal ARG PYTHON_VERSION ARG SIMTOOLS_BRANCH -ARG SIMTOOLS_REPO +ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" COPY --from=corsika_img /workdir/simulation_software/corsika7 /workdir/simulation_software/corsika7 COPY --from=simtel_img /workdir/simulation_software/sim_telarray /workdir/simulation_software/sim_telarray From a709f201b46337d2dbf9123986283c0fef3bf1d6 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 12:34:31 +0100 Subject: [PATCH 10/19] corsika config release v0.1.0 --- docker/Dockerfile-corsika7 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile-corsika7 b/docker/Dockerfile-corsika7 index 06485dfbd8..f57759c973 100644 --- a/docker/Dockerfile-corsika7 +++ b/docker/Dockerfile-corsika7 @@ -12,7 +12,7 @@ ARG CORSIKA_VERSION="78010" ARG CORSIKA_OPT_PATCH_VERSION="v1.1.0" -ARG CORSIKA_CONFIG_VERSION="78010" +ARG CORSIKA_CONFIG_VERSION="v0.1.0" ARG AVX_FLAG="avx2" # hadolint global ignore=DL3013,DL3033,DL3041,DL4006,SC1091,SC2086 From 0ee4bb2026e2f77763d7f0c1c11fd5b85ba78867 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 12:44:07 +0100 Subject: [PATCH 11/19] fix image tag --- .github/workflows/build-sim_telarray.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-sim_telarray.yml b/.github/workflows/build-sim_telarray.yml index a3e9062717..3a4c16cf75 100644 --- a/.github/workflows/build-sim_telarray.yml +++ b/.github/workflows/build-sim_telarray.yml @@ -32,8 +32,8 @@ jobs: - {build_opt: 'prod6-baseline', extra_def: '-DMAXIMUM_TELESCOPES=99'} env: - BASE_LABEL: "simtel-${{ matrix.production.build_opt }}" - BASE_TAG: "simtel-${{ matrix.version.simtel_version }}" + BASE_LABEL: "sim_telarray" + BASE_TAG: "${{ matrix.production.build_opt }}-${{ matrix.version.simtel_version }}" steps: - name: Checkout repository From 665c5868db5fb49432d52b1a6b1b42e1d8073464 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 13:41:28 +0100 Subject: [PATCH 12/19] simpler tags --- .github/workflows/build-corsika7.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-corsika7.yml b/.github/workflows/build-corsika7.yml index 565181e984..fe10512424 100644 --- a/.github/workflows/build-corsika7.yml +++ b/.github/workflows/build-corsika7.yml @@ -81,7 +81,7 @@ jobs: type=ref,event=pr,suffix=-${{ env.BASE_TAG }} type=semver,pattern={{major}}.{{minor}}.{{patch}}-${{ env.BASE_TAG }} type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} - type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} + type=raw,value={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} flavor: latest=false From 253145ba9d71d312d893e77b0ecbd0db929690b3 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 14:15:41 +0100 Subject: [PATCH 13/19] naming in changelog --- .github/workflows/build-corsika7.yml | 21 +++++++----------- .github/workflows/build-sim_telarray.yml | 25 +++++++-------------- .github/workflows/build-simtools-dev.yml | 27 +++++++++-------------- .github/workflows/build-simtools-prod.yml | 20 +++++++++-------- docker/Dockerfile-simtools-dev | 10 ++++----- docker/Dockerfile-simtools-prod | 7 +++--- docs/changes/1954.api.md | 6 +++++ docs/changes/1954.feature.md | 3 +++ 8 files changed, 54 insertions(+), 65 deletions(-) create mode 100644 docs/changes/1954.api.md create mode 100644 docs/changes/1954.feature.md diff --git a/.github/workflows/build-corsika7.yml b/.github/workflows/build-corsika7.yml index fe10512424..a8dd3315a7 100644 --- a/.github/workflows/build-corsika7.yml +++ b/.github/workflows/build-corsika7.yml @@ -20,7 +20,6 @@ env: CLOUD_URL: "https://syncandshare.desy.de/index.php/s/" jobs: - download-auxiliary-files: runs-on: ubuntu-latest @@ -45,17 +44,17 @@ jobs: strategy: matrix: version: - - {corsika_version: '78010', avx_flag: 'no_opt'} - - {corsika_version: '78010', avx_flag: 'avx2'} - - {corsika_version: '78010', avx_flag: 'avx512f'} - - {corsika_version: '78010', avx_flag: 'sse4'} + - {corsika: '78010', avx_flag: 'no_opt', corsika_config: 'v0.1.0'} + - {corsika: '78010', avx_flag: 'avx2', corsika_config: 'v0.1.0'} + - {corsika: '78010', avx_flag: 'avx512f', corsika_config: 'v0.1.0'} + - {corsika: '78010', avx_flag: 'sse4', corsika_config: 'v0.1.0'} env: BASE_LABEL: "corsika7" - BASE_TAG: "${{ matrix.version.corsika_version }}-${{ matrix.version.avx_flag }}" + BASE_TAG: "${{ matrix.version.corsika }}-${{ matrix.version.avx_flag }}" steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Download auxiliary files uses: actions/download-artifact@v6 @@ -93,15 +92,11 @@ jobs: platforms: ${{ matrix.version.avx_flag == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} build-args: | AVX_FLAG=${{ matrix.version.avx_flag }} - CORSIKA_VERSION=${{ matrix.version.corsika_version }} + CORSIKA_VERSION=${{ matrix.version.corsika }} + CORSIKA_CONFIG_VERSION=${{ matrix.version.corsika_config }} secrets: | corsika7_token=${{ secrets.CORSIKA7_KIT_GITLAB }} push: ${{ github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-corsika7 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - - - name: Output image information - run: | - echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }}:latest" - echo "Image tags: ${{ steps.meta.outputs.tags }}" diff --git a/.github/workflows/build-sim_telarray.yml b/.github/workflows/build-sim_telarray.yml index 3a4c16cf75..e4121b8e84 100644 --- a/.github/workflows/build-sim_telarray.yml +++ b/.github/workflows/build-sim_telarray.yml @@ -19,7 +19,7 @@ env: CLOUD_URL: "https://syncandshare.desy.de/index.php/s/" jobs: - build-base-images: + build-sim_telarray: runs-on: ubuntu-latest permissions: contents: read @@ -28,16 +28,13 @@ jobs: matrix: version: - {simtel_version: 'master', hessio_version: 'master', stdtools_version: 'master'} - production: - - {build_opt: 'prod6-baseline', extra_def: '-DMAXIMUM_TELESCOPES=99'} - env: BASE_LABEL: "sim_telarray" - BASE_TAG: "${{ matrix.production.build_opt }}-${{ matrix.version.simtel_version }}" + BASE_TAG: "${{ matrix.version.simtel_version }}" steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -50,18 +47,18 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata - id: meta-base + id: meta uses: docker/metadata-action@v5 with: tags: | type=ref,event=pr,suffix=-${{ env.BASE_TAG }} type=semver,pattern={{major}}.{{minor}}.{{patch}}-${{ env.BASE_TAG }} type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} - type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} + type=raw,value={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} flavor: latest=true - - name: Build /sim_telarray image + - name: Build and push uses: docker/build-push-action@v6 with: context: . @@ -70,17 +67,11 @@ jobs: SIMTEL_VERSION=${{ matrix.version.simtel_version }} HESSIO_VERSION=${{ matrix.version.hessio_version }} STDTOOLS_VERSION=${{ matrix.version.stdtools_version }} - EXTRA_DEF=${{ matrix.production.extra_def }} secrets: | sim_telarray_token=${{ secrets.SIMTELARRAY_CTAO_GITLAB }} hessio_token=${{ secrets.HESSIO_CTAO_GITLAB }} stdtools_token=${{ secrets.STDTOOLS_CTAO_GITLAB }} push: ${{ github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-simtel_array - tags: ${{ steps.meta-base.outputs.tags }} - labels: ${{ steps.meta-base.outputs.labels }} - - - name: Output image information - run: | - echo "Built base image: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }}:latest" - echo "Image tags: ${{ steps.meta-base.outputs.tags }}" + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/build-simtools-dev.yml b/.github/workflows/build-simtools-dev.yml index 691bf18853..25c418b013 100644 --- a/.github/workflows/build-simtools-dev.yml +++ b/.github/workflows/build-simtools-dev.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: pull_request: paths: - - './docker/Dockerfile-simtools-dev' + - docker/Dockerfile-simtools-dev release: types: [published] schedule: @@ -15,7 +15,6 @@ on: env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} - TEST_TAG: user/app:test CLOUD_URL: "https://syncandshare.desy.de/index.php/s/" jobs: @@ -34,15 +33,14 @@ jobs: qgsdat-III.bz2 retention-days: 1 - build-simtools-container: + build-simtools-dev: runs-on: ubuntu-latest needs: [download-qgsjet-tables] permissions: contents: read packages: write - strategy: - matrix: - type: ['dev'] + env: + BASE_LABEL: "simtools-dev" steps: - name: Checkout repository @@ -54,7 +52,7 @@ jobs: name: upload-qgsjet-tables path: . - - name: Set build arguments (correct branch) + - name: Set build branch run: | if [[ "${{ github.event_name }}" == 'pull_request' ]]; then echo "SIMTOOLS_BRANCH=${GITHUB_HEAD_REF}" >> "$GITHUB_ENV" @@ -63,9 +61,6 @@ jobs: fi echo "BUILD BRANCH ${{ env.SIMTOOLS_BRANCH }}" - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -76,7 +71,7 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker + - name: Extract metadata id: meta uses: docker/metadata-action@v5 with: @@ -84,17 +79,17 @@ jobs: type=ref,event=pr type=semver,pattern={{major}}.{{minor}}.{{patch}} type=schedule,pattern={{date 'YYYYMMDD'}} - type=raw,value={{date 'YYYYMMDD-HHmmss'}} - images: ${{ env.REGISTRY }}/gammasim/simtools-${{ matrix.type }} + type=raw,value={{date 'YYYYMMDD'}} + images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} flavor: latest=true - - name: Build and push image + - name: Build and push uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64,linux/arm64/v8 build-args: SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} push: ${{ github.event_name == 'release' || github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} - file: ./docker/Dockerfile-simtools-${{ matrix.type }} + file: ./docker/Dockerfile-simtools-dev tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }}-${{ matrix.type }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/build-simtools-prod.yml b/.github/workflows/build-simtools-prod.yml index 016be05cc7..5dcbc4e5b7 100644 --- a/.github/workflows/build-simtools-prod.yml +++ b/.github/workflows/build-simtools-prod.yml @@ -17,7 +17,7 @@ env: IMAGE_NAME: ${{ github.repository }} jobs: - build-simtools-images: + build-simtools-prod: runs-on: ubuntu-latest permissions: contents: read @@ -25,10 +25,13 @@ jobs: strategy: matrix: version: - - {corsika_image: '78010', avx_flag: 'no_opt', simtel_image: 'latest'} + - {corsika: '78010', avx_flag: 'no_opt', simtel_image: 'latest'} + - {corsika: '78010', avx_flag: 'avx2', simtel_image: 'latest'} + - {corsika: '78010', avx_flag: 'avx512f', simtel_image: 'latest'} + - {corsika: '78010', avx_flag: 'sse4', simtel_image: 'latest'} env: - BASE_LABEL: "simtools" - BASE_TAG: "corsika${{ matrix.version.corsika_image }}-${{ matrix.version.avx_flag }}-simtel${{ matrix.version.simtel_image }}" + BASE_LABEL: "simtools-prod" + BASE_TAG: "corsika${{ matrix.version.corsika }}-${{ matrix.version.avx_flag }}-simtel${{ matrix.version.simtel_image }}" steps: - name: Checkout repository @@ -61,9 +64,9 @@ jobs: type=ref,event=pr,suffix=-${{ env.BASE_TAG }} type=semver,pattern={{major}}.{{minor}}.{{patch}}-${{ env.BASE_TAG }} type=schedule,pattern={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} - type=raw,value={{date 'YYYYMMDD-HHmmss'}}-${{ env.BASE_TAG }} + type=raw,value={{date 'YYYYMMDD'}}-${{ env.BASE_TAG }} images: ${{ env.REGISTRY }}/gammasim/${{ env.BASE_LABEL }} - flavor: latest=true + flavor: latest=false - name: Build and push uses: docker/build-push-action@v6 @@ -72,12 +75,11 @@ jobs: # Build multi-platform only for no_opt (non-optimized) variant, others are x86-specific platforms: ${{ matrix.version.avx_flag == 'no_opt' && 'linux/amd64,linux/arm64/v8' || 'linux/amd64' }} build-args: | - CORSIKA_IMAGE_VERSION=${{ matrix.version.corsika_image }} - SIMTEL_BUILD_OPT=prod6-baseline + CORSIKA_IMAGE_VERSION=${{ matrix.version.corsika }} SIMTEL_IMAGE_VERSION=${{ matrix.version.simtel_image }} AVX_FLAG=${{ matrix.version.avx_flag }} SIMTOOLS_BRANCH=${{ env.SIMTOOLS_BRANCH }} + push: ${{ github.event_name == 'release' || github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} file: ./docker/Dockerfile-simtools-prod tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - push: ${{ github.event_name == 'release' || github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} diff --git a/docker/Dockerfile-simtools-dev b/docker/Dockerfile-simtools-dev index fed364ce8c..9842a92373 100644 --- a/docker/Dockerfile-simtools-dev +++ b/docker/Dockerfile-simtools-dev @@ -11,19 +11,17 @@ # hadolint global ignore=DL3013,DL3041 # - DL3013, DL3041: ignore warnings about using latest -ARG CORSIKA_IMAGE_VERSION="pr-1954-78010" -ARG SIMTEL_BUILD_OPT="prod6-baseline" +ARG CORSIKA_IMAGE_VERSION="20251217-78010" ARG SIMTEL_IMAGE_VERSION="latest" ARG AVX_FLAG="no_opt" -ARG PYTHON_VERSION="3.13" -ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" +ARG PYTHON_VERSION="3.12" FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_FLAG} AS corsika_img -FROM ghcr.io/gammasim/simtel-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img +FROM ghcr.io/gammasim/sim_telarray:${SIMTEL_IMAGE_VERSION} AS simtel_img FROM almalinux:9.5-minimal ARG PYTHON_VERSION -ARG SIMTOOLS_REPO +ARG SIMTOOLS_REPO="https://github.com/gammasim/simtools.git" COPY --from=corsika_img /workdir/simulation_software/corsika7 /workdir/simulation_software/corsika7 COPY --from=simtel_img /workdir/simulation_software/sim_telarray /workdir/simulation_software/sim_telarray diff --git a/docker/Dockerfile-simtools-prod b/docker/Dockerfile-simtools-prod index e4c419fac7..82bd4b212d 100644 --- a/docker/Dockerfile-simtools-prod +++ b/docker/Dockerfile-simtools-prod @@ -6,15 +6,14 @@ # hadolint global ignore=DL3013,DL3041 # - DL3013, DL3041: ignore warnings about using latest -ARG CORSIKA_IMAGE_VERSION="pr-1954-78010" -ARG SIMTEL_BUILD_OPT="prod6-baseline" +ARG CORSIKA_IMAGE_VERSION="20251217-78010" ARG SIMTEL_IMAGE_VERSION="latest" ARG AVX_FLAG="no_opt" -ARG PYTHON_VERSION="3.13" +ARG PYTHON_VERSION="3.12" ARG SIMTOOLS_BRANCH=main FROM ghcr.io/gammasim/corsika7:${CORSIKA_IMAGE_VERSION}-${AVX_FLAG} AS corsika_img -FROM ghcr.io/gammasim/simtel-${SIMTEL_BUILD_OPT}:${SIMTEL_IMAGE_VERSION} AS simtel_img +FROM ghcr.io/gammasim/sim_telarray:${SIMTEL_IMAGE_VERSION} AS simtel_img FROM almalinux:9.5-minimal ARG PYTHON_VERSION diff --git a/docs/changes/1954.api.md b/docs/changes/1954.api.md new file mode 100644 index 0000000000..ff4810fcd2 --- /dev/null +++ b/docs/changes/1954.api.md @@ -0,0 +1,6 @@ +Change in naming of simtools docker images: + +- [CORSIKA image](https://github.com/gammasim/simtools/pkgs/container/corsika7) is now called e.g. `ghcr.io/gammasim/corsika7:0.26.0-78010-avx512f` +- [sim_telarray image](https://github.com/gammasim/simtools/pkgs/container/sim_telarray) is now called e.g. `ghcr.io/gammasim/sim_telarray:0.26.0-` +- [simtools-dev image](https://github.com/gammasim/simtools/pkgs/container/simtools-dev) is now called e.g. `ghcr.io/gammasim/simtools-dev:latest` (save to use the latest tag here) +- [simtools-prod image](https://github.com/gammasim/simtools/pkgs/container/simtools-prod) is now called e.g. `ghcr.io/gammasim/simtools-prod:0.26.0-corsika--simtel` diff --git a/docs/changes/1954.feature.md b/docs/changes/1954.feature.md new file mode 100644 index 0000000000..c4efde1f0c --- /dev/null +++ b/docs/changes/1954.feature.md @@ -0,0 +1,3 @@ +Add building workflow for simtools-prod image. +Update docker files and building workflows for CORSIKA, sim_telarray, and simtools. +Simplify package naming. From 293b74b9e3e2d8642a865abd811c2940dfc96d22 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 17:05:15 +0100 Subject: [PATCH 14/19] api --- docs/changes/1954.api.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/changes/1954.api.md b/docs/changes/1954.api.md index ff4810fcd2..aa1809e924 100644 --- a/docs/changes/1954.api.md +++ b/docs/changes/1954.api.md @@ -1,6 +1,6 @@ Change in naming of simtools docker images: -- [CORSIKA image](https://github.com/gammasim/simtools/pkgs/container/corsika7) is now called e.g. `ghcr.io/gammasim/corsika7:0.26.0-78010-avx512f` -- [sim_telarray image](https://github.com/gammasim/simtools/pkgs/container/sim_telarray) is now called e.g. `ghcr.io/gammasim/sim_telarray:0.26.0-` -- [simtools-dev image](https://github.com/gammasim/simtools/pkgs/container/simtools-dev) is now called e.g. `ghcr.io/gammasim/simtools-dev:latest` (save to use the latest tag here) -- [simtools-prod image](https://github.com/gammasim/simtools/pkgs/container/simtools-prod) is now called e.g. `ghcr.io/gammasim/simtools-prod:0.26.0-corsika--simtel` +- [CORSIKA image](https://github.com/gammasim/simtools/pkgs/container/corsika7) is called e.g. `ghcr.io/gammasim/corsika7:0.26.0-78010-avx512f` +- [sim_telarray image](https://github.com/gammasim/simtools/pkgs/container/sim_telarray) is called e.g. `ghcr.io/gammasim/sim_telarray:0.26.0-` +- [simtools-dev image](https://github.com/gammasim/simtools/pkgs/container/simtools-dev) is called e.g. `ghcr.io/gammasim/simtools-dev:latest` (save to use the latest tag here) +- [simtools-prod image](https://github.com/gammasim/simtools/pkgs/container/simtools-prod) is called e.g. `ghcr.io/gammasim/simtools-prod:0.26.0-corsika--simtel` From 6e956d6674ab2612b5195ccf8ce75c0489c7b446 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 17:10:43 +0100 Subject: [PATCH 15/19] corsika version --- .github/workflows/build-simtools-prod.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-simtools-prod.yml b/.github/workflows/build-simtools-prod.yml index 5dcbc4e5b7..3ca45d658e 100644 --- a/.github/workflows/build-simtools-prod.yml +++ b/.github/workflows/build-simtools-prod.yml @@ -25,10 +25,10 @@ jobs: strategy: matrix: version: - - {corsika: '78010', avx_flag: 'no_opt', simtel_image: 'latest'} - - {corsika: '78010', avx_flag: 'avx2', simtel_image: 'latest'} - - {corsika: '78010', avx_flag: 'avx512f', simtel_image: 'latest'} - - {corsika: '78010', avx_flag: 'sse4', simtel_image: 'latest'} + - {corsika: '20251217-78010', avx_flag: 'no_opt', simtel_image: 'latest'} + - {corsika: '20251217-78010', avx_flag: 'avx2', simtel_image: 'latest'} + - {corsika: '20251217-78010', avx_flag: 'avx512f', simtel_image: 'latest'} + - {corsika: '20251217-78010', avx_flag: 'sse4', simtel_image: 'latest'} env: BASE_LABEL: "simtools-prod" BASE_TAG: "corsika${{ matrix.version.corsika }}-${{ matrix.version.avx_flag }}-simtel${{ matrix.version.simtel_image }}" From 0ce52f28d4afa99fc55fe26245edb34b40ec03ac Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 17:40:23 +0100 Subject: [PATCH 16/19] add gcc --- docker/Dockerfile-simtools-prod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile-simtools-prod b/docker/Dockerfile-simtools-prod index 82bd4b212d..2f3d809b1d 100644 --- a/docker/Dockerfile-simtools-prod +++ b/docker/Dockerfile-simtools-prod @@ -26,7 +26,7 @@ COPY --from=simtel_img /workdir/simulation_software/hessioxxx /workdir/simulatio COPY --from=simtel_img /workdir/simulation_software/stdtools /workdir/simulation_software/stdtools RUN microdnf update -y && microdnf install -y \ - bc findutils git gsl-devel libgfortran procps zstd \ + bc findutils gcc-c++ git gsl libgfortran procps wget zstd \ python${PYTHON_VERSION} python${PYTHON_VERSION}-pip python${PYTHON_VERSION}-devel && \ microdnf clean all && \ rm -rf /var/cache/dnf/* /tmp/* /var/tmp/* && \ From cc0bcd787695cc8dddfdbb2968dd45df98bac787 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Wed, 17 Dec 2025 20:43:07 +0100 Subject: [PATCH 17/19] add back prod6 --- docker/Dockerfile-simtel_array | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile-simtel_array b/docker/Dockerfile-simtel_array index d91131f48b..532732ad9f 100644 --- a/docker/Dockerfile-simtel_array +++ b/docker/Dockerfile-simtel_array @@ -4,7 +4,7 @@ # Image with sim_telarray and tools. # -ARG EXTRA_DEFINES="-DMAXIMUM_TELESCOPES=99" +ARG EXTRA_DEFINES="-DCTA_PROD6 -DMAXIMUM_TELESCOPES=99" ARG SIMTEL_VERSION="master" ARG HESSIO_VERSION="master" ARG STDTOOLS_VERSION="master" From 7a1c8d8df76066205aacd1fb28b6f1dd5ec8dc11 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Thu, 18 Dec 2025 09:54:47 +0100 Subject: [PATCH 18/19] copilot comments --- .github/workflows/build-simtools-prod.yml | 2 +- docker/Dockerfile-corsika7 | 2 +- docker/Dockerfile-simtools-prod | 3 ++- docs/changes/1954.api.md | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-simtools-prod.yml b/.github/workflows/build-simtools-prod.yml index 3ca45d658e..c1c6857ea3 100644 --- a/.github/workflows/build-simtools-prod.yml +++ b/.github/workflows/build-simtools-prod.yml @@ -31,7 +31,7 @@ jobs: - {corsika: '20251217-78010', avx_flag: 'sse4', simtel_image: 'latest'} env: BASE_LABEL: "simtools-prod" - BASE_TAG: "corsika${{ matrix.version.corsika }}-${{ matrix.version.avx_flag }}-simtel${{ matrix.version.simtel_image }}" + BASE_TAG: "corsika-${{ matrix.version.corsika }}-${{ matrix.version.avx_flag }}-simtel-${{ matrix.version.simtel_image }}" steps: - name: Checkout repository diff --git a/docker/Dockerfile-corsika7 b/docker/Dockerfile-corsika7 index f57759c973..0146c2270b 100644 --- a/docker/Dockerfile-corsika7 +++ b/docker/Dockerfile-corsika7 @@ -39,7 +39,7 @@ WORKDIR /src # Clone CORSIKA configuration files from CTAO gitlab RUN git config --global advice.detachedHead false && \ - git clone --depth 1 --branch "${CORSIKA_CONFIG_VERSION}" "http://${CORSIKA_CONFIG_REPO}" && \ + git clone --depth 1 --branch "${CORSIKA_CONFIG_VERSION}" "https://${CORSIKA_CONFIG_REPO}" && \ cp -v corsika7-config/config/${CORSIKA_VERSION}/*.h . && \ rm -rf corsika7-config diff --git a/docker/Dockerfile-simtools-prod b/docker/Dockerfile-simtools-prod index 2f3d809b1d..7498bed833 100644 --- a/docker/Dockerfile-simtools-prod +++ b/docker/Dockerfile-simtools-prod @@ -1,6 +1,7 @@ # Dockerfile for simtools production. # -# Uses CORSIKA (no vector optimization) and sim_telarray pre-built images. +# Uses CORSIKA and sim_telarray pre-built images; CORSIKA AVX optimization +# (no_opt, avx2, avx512f, sse4) is selected via the AVX_FLAG build argument. # No QGSJet tables are included. # # hadolint global ignore=DL3013,DL3041 diff --git a/docs/changes/1954.api.md b/docs/changes/1954.api.md index aa1809e924..193cb86151 100644 --- a/docs/changes/1954.api.md +++ b/docs/changes/1954.api.md @@ -2,5 +2,5 @@ Change in naming of simtools docker images: - [CORSIKA image](https://github.com/gammasim/simtools/pkgs/container/corsika7) is called e.g. `ghcr.io/gammasim/corsika7:0.26.0-78010-avx512f` - [sim_telarray image](https://github.com/gammasim/simtools/pkgs/container/sim_telarray) is called e.g. `ghcr.io/gammasim/sim_telarray:0.26.0-` -- [simtools-dev image](https://github.com/gammasim/simtools/pkgs/container/simtools-dev) is called e.g. `ghcr.io/gammasim/simtools-dev:latest` (save to use the latest tag here) +- [simtools-dev image](https://github.com/gammasim/simtools/pkgs/container/simtools-dev) is called e.g. `ghcr.io/gammasim/simtools-dev:latest` (safe to use the latest tag here) - [simtools-prod image](https://github.com/gammasim/simtools/pkgs/container/simtools-prod) is called e.g. `ghcr.io/gammasim/simtools-prod:0.26.0-corsika--simtel` From 8c783bec7d5ddb1d4cf1bff121e1629bb5907da1 Mon Sep 17 00:00:00 2001 From: Gernot Maier Date: Mon, 5 Jan 2026 10:19:12 +0100 Subject: [PATCH 19/19] tmp fix --- docker/Dockerfile-corsika7 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile-corsika7 b/docker/Dockerfile-corsika7 index 0146c2270b..733374339d 100644 --- a/docker/Dockerfile-corsika7 +++ b/docker/Dockerfile-corsika7 @@ -47,7 +47,7 @@ RUN git config --global advice.detachedHead false && \ RUN --mount=type=secret,id=corsika7_token \ CORSIKA7_TAG="v$(echo "${CORSIKA_VERSION}" | cut -c1).$(echo "${CORSIKA_VERSION}" | cut -c2-)" && \ git config --global advice.detachedHead false && \ - git clone --depth 1 --branch "${CORSIKA7_TAG}" "https://oauth2:$(cat /run/secrets/corsika7_token)@${CORSIKA_REPO}" + GIT_SSL_NO_VERIFY=1 git clone --depth 1 --branch "${CORSIKA7_TAG}" "https://oauth2:$(cat /run/secrets/corsika7_token)@${CORSIKA_REPO}" # Clone CORSIKA optimization patches from CTAO gitlab RUN git config --global advice.detachedHead false && \