From 8ade8a77dd337a4d673575749f2545b1629aa254 Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Thu, 30 Sep 2021 23:34:47 +0200 Subject: Build container images on Github Actions and push to multiple registries (#26247) Modifications: - Modify the workflow to build container images without pushing when the workflow file itself is modified - Strip the leading ghcr.io/spack/ from env.container env.versioned to prepare pushing to multiple registries - Fixed CentOS 7 and Amazon Linux builds - Login and push to Docker Hub as well as Github Action - Add a badge to README.md with the status of docker images --- .github/workflows/build-containers.yml | 38 ++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to '.github/workflows/build-containers.yml') diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index d2dd2d825e..74c7c9e1b1 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -1,8 +1,16 @@ -name: Build & Deploy Docker Containers +name: Containers on: + # This Workflow can be triggered manually + workflow_dispatch: # Build new Spack develop containers nightly. schedule: - cron: '34 0 * * *' + # Run on pull requests that modify this file + pull_request: + branches: + - develop + paths: + - '.github/workflows/build-containers.yml' # Let's also build & tag Spack containers on releases. release: types: [published] @@ -29,7 +37,7 @@ jobs: - name: Set Container Tag Normal (Nightly) run: | - container="ghcr.io/spack/${{ matrix.dockerfile[0]}}:latest" + container="${{ matrix.dockerfile[0] }}:latest" echo "container=${container}" >> $GITHUB_ENV echo "versioned=${container}" >> $GITHUB_ENV @@ -37,7 +45,7 @@ jobs: - name: Set Container Tag on Release if: github.event_name == 'release' run: | - versioned="ghcr.io/spack/${{matrix.dockerfile[0]}}:${GITHUB_REF##*/}" + versioned="${{matrix.dockerfile[0]}}:${GITHUB_REF##*/}" echo "versioned=${versioned}" >> $GITHUB_ENV - name: Check ${{ matrix.dockerfile[1] }} Exists @@ -48,6 +56,12 @@ jobs: exit 1; fi + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Log in to GitHub Container Registry uses: docker/login-action@v1 with: @@ -55,18 +69,20 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + - name: Log in to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build & Deploy ${{ matrix.dockerfile[1] }} uses: docker/build-push-action@v2 with: file: share/spack/docker/${{matrix.dockerfile[1]}} platforms: ${{ matrix.dockerfile[2] }} - push: true + push: ${{ github.event_name != 'pull_request' }} tags: | - ${{ env.container }} - ${{ env.versioned }} + spack/${{ env.container }} + spack/${{ env.versioned }} + ghcr.io/spack/${{ env.container }} + ghcr.io/spack/${{ env.versioned }} -- cgit v1.2.3-60-g2f50