diff --git a/.github/workflows/build-images.yml b/.github/workflows/build-images.yml index 27b432a..4fef474 100644 --- a/.github/workflows/build-images.yml +++ b/.github/workflows/build-images.yml @@ -12,6 +12,11 @@ on: jobs: buildx: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + image: [stable, edge] + name: Build images based on ${{ matrix.image }} Alpine release steps: - name: Checkout uses: actions/checkout@v2 @@ -27,4 +32,4 @@ jobs: env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - run: ./buildx.sh ${{ github.event_name }} + run: ./buildx.sh ${{ github.event_name }} ${{ matrix.image }} diff --git a/buildx.sh b/buildx.sh index 78007de..5f722e5 100755 --- a/buildx.sh +++ b/buildx.sh @@ -5,6 +5,8 @@ set -euxo pipefail EVENT=$1 +EDGE=false +[ "$2" = edge ] && EDGE=true build_image() { local PUSH @@ -59,15 +61,15 @@ main() { PUSH=false fi + if [ "$EDGE" = true ] ; then + sed -e 's/^FROM alpine:.*$/FROM alpine:edge/' Dockerfile > Dockerfile.edge + fi image_build_arguments | while read -r IMAGE BUILD_ARGS ; do - build_image $PUSH --tag "$IMAGE:latest" --tag "$IMAGE:$TAG" --tag "${IMAGE}:${TAG%%-*}" "$BUILD_ARGS" - done - - # run the edge builds in a separate loop, to avoid issues in them from - # preventing the stable image builds and pushes to conclude - sed -e 's/^FROM alpine:.*$/FROM alpine:edge/' Dockerfile > Dockerfile.edge - image_build_arguments | while read -r IMAGE BUILD_ARGS ; do - build_image $PUSH -f Dockerfile.edge --tag "$IMAGE:edge" "$BUILD_ARGS" + if [ "$EDGE" = false ] ; then + build_image $PUSH --tag "$IMAGE:latest" --tag "$IMAGE:$TAG" --tag "${IMAGE}:${TAG%%-*}" "$BUILD_ARGS" + else + build_image $PUSH -f Dockerfile.edge --tag "$IMAGE:edge" "$BUILD_ARGS" + fi done rm -f Dockerfile.edge "$HOME/.docker/config.json"