diff --git a/.github/workflows/build-push.yml b/.github/workflows/build-push.yml index 96d034bb..00f6c8bc 100644 --- a/.github/workflows/build-push.yml +++ b/.github/workflows/build-push.yml @@ -60,71 +60,6 @@ jobs: BUILD_IMAGE: debian_stable_base PLATFORM: linux/amd64 steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: linux/amd64,linux/arm64 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: | - name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }} - name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }} - tags: | - ${{ env.INTERNAL_TAG }} - type=schedule - type=ref,prefix=unstable-pr-,event=pr - - name: Login to Docker Hub - uses: docker/login-action@v3 - if: ${{ env.DH_PUSH == '1' }} - with: - registry: ${{ env.DH_REGISTRY }} - username: ${{ env.DH_REGISTRY_USER }} - password: ${{ secrets.DH_EICWEB_TOKEN }} - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - if: ${{ env.GH_PUSH == '1' }} - with: - registry: ${{ env.GH_REGISTRY }} - username: ${{ secrets.GHCR_REGISTRY_USER }} - password: ${{ secrets.GHCR_REGISTRY_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v5 - with: - file: containers/debian/base.Dockerfile - context: containers/debian - platforms: ${{ matrix.PLATFORM }} - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - BASE_IMAGE=${{ matrix.BASE_IMAGE }} - BUILD_IMAGE=${{ matrix.BUILD_IMAGE }} - cache-from: type=gha,scope=${{ github.workflow }} - cache-to: type=gha,mode=max,scope=${{ github.workflow }} - - dev: - runs-on: ubuntu-latest - needs: base - strategy: - matrix: - include: - - BUILDER_IMAGE: debian_stable_base - RUNTIME_IMAGE: debian_stable_base - BUILD_IMAGE: dev - PLATFORM: linux/amd64 - ENV: dev - steps: - - name: Free Disk Space (Ubuntu) - uses: jlumbroso/free-disk-space@v1.3.1 - with: - android: true - dotnet: true - name: Checkout uses: actions/checkout@v4 - name: Load spack version and cherry-picks @@ -136,6 +71,15 @@ jobs: echo "version=${SPACK_VERSION}" | tee -a $GITHUB_OUTPUT echo "cherrypicks=${SPACK_CHERRYPICKS//$'\n'/ }" | tee -a $GITHUB_OUTPUT echo "cherrypicks_files=${SPACK_CHERRYPICKS_FILES//$'\n'/ }" | tee -a $GITHUB_OUTPUT + - name: Load spack-packages version and cherry-picks + id: spack-packages + shell: bash + run: | + source spack-packages.sh + echo "orgrepo=${SPACKPACKAGES_ORGREPO}" | tee -a $GITHUB_OUTPUT + echo "version=${SPACKPACKAGES_VERSION}" | tee -a $GITHUB_OUTPUT + echo "cherrypicks=${SPACKPACKAGES_CHERRYPICKS//$'\n'/ }" | tee -a $GITHUB_OUTPUT + echo "cherrypicks_files=${SPACKPACKAGES_CHERRYPICKS_FILES//$'\n'/ }" | tee -a $GITHUB_OUTPUT - name: Load key4hep-spack version id: key4hep-spack run: | @@ -148,24 +92,10 @@ jobs: source eic-spack.sh echo "orgrepo=${EICSPACK_ORGREPO}" | tee -a $GITHUB_OUTPUT echo "version=${EICSPACK_VERSION}" | tee -a $GITHUB_OUTPUT - - name: Load secrets into mirrors.yaml - id: mirrors - run: | - source spack.sh - export SPACK_VERSION - export CI_REGISTRY=ghcr.io - export CI_PROJECT_PATH=eic - export CI_REGISTRY_USER=${{ secrets.GHCR_REGISTRY_USER }} - export CI_REGISTRY_PASSWORD=${{ secrets.GHCR_REGISTRY_TOKEN }} - export GITHUB_REGISTRY_USER=${{ secrets.GHCR_REGISTRY_USER }} - export GITHUB_REGISTRY_TOKEN=${{ secrets.GHCR_REGISTRY_TOKEN }} - export S3RW_ACCESS_KEY=${{ secrets.S3RW_ACCESS_KEY }} - export S3RW_SECRET_KEY=${{ secrets.S3RW_SECRET_KEY }} - cat mirrors.yaml.in | envsubst > mirrors.yaml - name: Set up QEMU uses: docker/setup-qemu-action@v3 with: - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Docker meta @@ -173,13 +103,12 @@ jobs: uses: docker/metadata-action@v5 with: images: | - name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }} - name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }} + name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }} + name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }} tags: | ${{ env.INTERNAL_TAG }} - type=schedule,pattern={{date 'YYYY-MM-DD'}} + type=schedule type=ref,prefix=unstable-pr-,event=pr - type=match,pattern=^v(\d+\.\d+\.\d+-.*)$,group=1 - name: Login to Docker Hub uses: docker/login-action@v3 if: ${{ env.DH_PUSH == '1' }} @@ -197,46 +126,44 @@ jobs: - name: Build and push uses: docker/build-push-action@v5 with: - file: containers/jug/dev.Dockerfile - context: containers/jug - build-contexts: | - spack-environment=spack-environment - secret-files: | - mirrors=mirrors.yaml + file: containers/debian/Dockerfile + context: containers/debian platforms: ${{ matrix.PLATFORM }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | - DOCKER_REGISTRY=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/ - BUILDER_IMAGE=${{ matrix.BUILDER_IMAGE }} - RUNTIME_IMAGE=${{ matrix.RUNTIME_IMAGE }} - BUILD_IMAGE=eic_${{ matrix.BUILD_IMAGE }} - INTERNAL_TAG=${{ env.INTERNAL_TAG }} + BASE_IMAGE=${{ matrix.BASE_IMAGE }} + BUILD_IMAGE=${{ matrix.BUILD_IMAGE }} SPACK_ORGREPO=${{ steps.spack.outputs.orgrepo }} SPACK_VERSION=${{ steps.spack.outputs.version }} SPACK_CHERRYPICKS=${{ steps.spack.outputs.cherrypicks }} SPACK_CHERRYPICKS_FILES=${{ steps.spack.outputs.cherrypicks_files }} + SPACKPACKAGES_ORGREPO=${{ steps.spack-packages.outputs.orgrepo }} + SPACKPACKAGES_VERSION=${{ steps.spack-packages.outputs.version }} + SPACKPACKAGES_CHERRYPICKS=${{ steps.spack-packages.outputs.cherrypicks }} + SPACKPACKAGES_CHERRYPICKS_FILES=${{ steps.spack-packages.outputs.cherrypicks_files }} KEY4HEPSPACK_ORGREPO=${{ steps.eic-spack.outputs.orgrepo }} KEY4HEPSPACK_VERSION=${{ steps.eic-spack.outputs.version }} EICSPACK_ORGREPO=${{ steps.eic-spack.outputs.orgrepo }} EICSPACK_VERSION=${{ steps.eic-spack.outputs.version }} KEY4HEPSPACK_ORGREPO=${{ steps.key4hep-spack.outputs.orgrepo }} KEY4HEPSPACK_VERSION=${{ steps.key4hep-spack.outputs.version }} - S3_ACCESS_KEY=${{ secrets.S3_ACCESS_KEY }} - S3_SECRET_KEY=${{ secrets.S3_SECRET_KEY }} jobs=${{ env.JOBS }} cache-from: type=gha,scope=${{ github.workflow }} cache-to: type=gha,mode=max,scope=${{ github.workflow }} - xl: + eic: runs-on: ubuntu-latest - needs: dev + needs: base strategy: matrix: include: - - BASE_IMAGE: dev - BUILD_IMAGE: xl + - BUILD_IMAGE: eic_ + ENV: xl + BUILD_TYPE: default + BUILDER_IMAGE: debian_stable_base + RUNTIME_IMAGE: debian_stable_base PLATFORM: linux/amd64 steps: - name: Free Disk Space (Ubuntu) @@ -246,6 +173,18 @@ jobs: dotnet: true - name: Checkout uses: actions/checkout@v4 + - name: Load secrets into mirrors.yaml + id: mirrors + run: | + source spack.sh + export SPACK_VERSION + export CI_REGISTRY=ghcr.io + export CI_PROJECT_PATH=eic + export CI_REGISTRY_USER=${{ secrets.GHCR_REGISTRY_USER }} + export CI_REGISTRY_PASSWORD=${{ secrets.GHCR_REGISTRY_TOKEN }} + export GITHUB_REGISTRY_USER=${{ secrets.GHCR_REGISTRY_USER }} + export GITHUB_REGISTRY_TOKEN=${{ secrets.GHCR_REGISTRY_TOKEN }} + cat mirrors.yaml.in | envsubst > mirrors.yaml - name: Set up QEMU uses: docker/setup-qemu-action@v3 with: @@ -257,8 +196,8 @@ jobs: uses: docker/metadata-action@v5 with: images: | - name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.DH_PUSH != 0 }} - name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/eic_${{ matrix.BUILD_IMAGE }},enable=${{ env.GH_PUSH != 0 }} + name=${{ env.DH_REGISTRY }}/${{ env.DH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }}${{ matrix.ENV }},enable=${{ env.DH_PUSH != 0 }} + name=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/${{ matrix.BUILD_IMAGE }}${{ matrix.ENV }},enable=${{ env.GH_PUSH != 0 }} tags: | ${{ env.INTERNAL_TAG }} type=schedule,pattern={{date 'YYYY-MM-DD'}} @@ -281,19 +220,23 @@ jobs: - name: Build and push uses: docker/build-push-action@v5 with: - file: containers/jug/xl.Dockerfile - context: containers/jug + file: containers/eic/Dockerfile + context: containers/eic build-contexts: | - detectors=. + spack-environment=spack-environment + secret-files: | + mirrors=mirrors.yaml platforms: ${{ matrix.PLATFORM }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | DOCKER_REGISTRY=${{ env.GH_REGISTRY }}/${{ env.GH_REGISTRY_USER }}/ - BASE_IMAGE=eic_${{ matrix.BASE_IMAGE }} + BUILDER_IMAGE=${{ matrix.BUILDER_IMAGE }} + RUNTIME_IMAGE=${{ matrix.RUNTIME_IMAGE }} BUILD_IMAGE=eic_${{ matrix.BUILD_IMAGE }} INTERNAL_TAG=${{ env.INTERNAL_TAG }} + ENV=${{ matrix.ENV }} jobs=${{ env.JOBS }} cache-from: type=gha,scope=${{ github.workflow }} cache-to: type=gha,mode=max,scope=${{ github.workflow }}