From 8c172ae15fa1e1f98f75b4ff6d2a3a7d2b21e42c Mon Sep 17 00:00:00 2001 From: Hadrien Patte Date: Thu, 28 Mar 2024 00:33:32 +0100 Subject: [PATCH] Configure github action to build images --- .github/scripts/build-all-images.sh | 7 ++++++ .github/scripts/build-image.sh | 28 ++++++++++++++++++++++ .github/workflows/build-images.yaml | 37 +++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100755 .github/scripts/build-all-images.sh create mode 100755 .github/scripts/build-image.sh create mode 100644 .github/workflows/build-images.yaml diff --git a/.github/scripts/build-all-images.sh b/.github/scripts/build-all-images.sh new file mode 100755 index 0000000..8a8c0b7 --- /dev/null +++ b/.github/scripts/build-all-images.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +for image in $(ls images); do + echo "Building $image" + ./.github/scripts/build-image.sh $image +done diff --git a/.github/scripts/build-image.sh b/.github/scripts/build-image.sh new file mode 100755 index 0000000..e50bca9 --- /dev/null +++ b/.github/scripts/build-image.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail + +IMAGE=$1 +RELEASE=$(./images/${IMAGE}/latest.sh) +VERSION=${RELEASE%%_*} +VERSION=${VERSION#release-} +VERSION=${VERSION#v} + +if [[ -z $VERSION ]]; then + echo "Failed to retrieve latest version for $IMAGE" +else + docker buildx build \ + --push \ + --platform linux/amd64,linux/arm64 \ + --tag ghcr.io/hadrienpatte/${IMAGE}:${VERSION} \ + --tag ghcr.io/hadrienpatte/${IMAGE}:latest \ + --build-arg RELEASE=${RELEASE} \ + --build-arg VERSION=${VERSION} \ + --build-arg GOLANG_VERSION="1.20" \ + --build-arg CHISEL_VERSION="v0.9.1" \ + --label "org.opencontainers.image.authors=HadrienPatte" \ + --label "org.opencontainers.image.source=https://github.com/HadrienPatte/images" \ + --label "org.opencontainers.image.version=${VERSION}" \ + --label "org.opencontainers.image.vendor=HadrienPatte" \ + --label "org.opencontainers.image.title=${IMAGE}" \ + - < images/${IMAGE}/Dockerfile +fi diff --git a/.github/workflows/build-images.yaml b/.github/workflows/build-images.yaml new file mode 100644 index 0000000..85151eb --- /dev/null +++ b/.github/workflows/build-images.yaml @@ -0,0 +1,37 @@ +--- +on: + push: + schedule: + - cron: "0 0 * * *" + +jobs: + generate-images-matrix: + runs-on: ubuntu-latest + outputs: + images-matrix: ${{ steps.generate-images-matrix.outputs.images-matrix }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Generate images matrix + run: echo "images-matrix=[$(ls -mQ images)]" | tee $GITHUB_OUTPUT + build-images: + runs-on: ubuntu-latest + needs: generate-images-matrix + strategy: + matrix: + image: ${{ fromJSON(needs.generate-images-matrix.outputs.images-matrix) }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to Github container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Run build script + run: ./.github/scripts/build-image.sh ${{ matrix.image }}