From 8e8d49bbe52f3953e12b24c3f14ff134c9637b72 Mon Sep 17 00:00:00 2001 From: Luke Hagar Date: Wed, 7 Feb 2024 09:12:31 -0600 Subject: [PATCH] Updated image, and added pre-release action --- .../workflows/update-pre-release-image.yaml | 70 +++++++++++++++++++ ...uild-image.yaml => update-prod-image.yaml} | 7 +- 2 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/update-pre-release-image.yaml rename .github/workflows/{build-image.yaml => update-prod-image.yaml} (88%) diff --git a/.github/workflows/update-pre-release-image.yaml b/.github/workflows/update-pre-release-image.yaml new file mode 100644 index 0000000..9226f96 --- /dev/null +++ b/.github/workflows/update-pre-release-image.yaml @@ -0,0 +1,70 @@ +name: Build and Push Latest Pre-release Docker Image + +on: + push: + branches: + - "main" + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + +jobs: + pre-release-build-push: + name: Build and Push Latest Pre-release Docker Image + runs-on: ubuntu-latest + steps: + - name: Check latest Pre-release Pocketbase Version + run: | + curl -s https://api.github.com/repos/pocketbase/pocketbase/releases | jq -r '.[] | select(.prerelease == true and .draft == false) | .tag_name' | head -n 1 > latest_version + id: latest_version + + - name: Print latest Pre-release Pocketbase Version + run: | + cat latest_version + id: print_version + + - name: Check latest Pre-release Docker Image Version + run: | + docker pull lukehagar/pocketbase:latest + docker inspect lukehagar/pocketbase:latest --format='{{index .Config.Labels "org.opencontainers.image.version"}}' > latest_docker_version + id: latest_docker_version + + - name: Print latest Pre-release Docker Image Version + run: | + cat latest_docker_version + id: print_docker_version + + - name: Check if latest version is different + run: | + if [ "$(cat latest_version)" != "$(cat latest_docker_version)" ]; then + echo "Versions are different" + echo "::set-output name=build::true" + else + echo "Versions are the same" + echo "::set-output name=build::false" + fi + id: check_version + + - name: Set up QEMU + if: steps.check_version.outputs.build == 'true' + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + if: steps.check_version.outputs.build == 'true' + uses: docker/setup-buildx-action@v2 + + - name: Login to Docker Hub + if: steps.check_version.outputs.build == 'true' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + if: steps.check_version.outputs.build == 'true' + uses: docker/build-push-action@v5 + with: + push: true + tags: lukehagar/pocketbase:pre-release + build-args: | + POCKETBASE_VERSION=$(cat latest_version) diff --git a/.github/workflows/build-image.yaml b/.github/workflows/update-prod-image.yaml similarity index 88% rename from .github/workflows/build-image.yaml rename to .github/workflows/update-prod-image.yaml index 03e5283..7e30974 100644 --- a/.github/workflows/build-image.yaml +++ b/.github/workflows/update-prod-image.yaml @@ -1,4 +1,4 @@ -name: Build Docker Image +name: Build and Push Latest Production Docker Image on: push: @@ -9,12 +9,13 @@ on: workflow_dispatch: jobs: - docker: + production-build-and-push: + name: Build and Push Latest Production Docker Image runs-on: ubuntu-latest steps: - name: Check latest Pocketbase Version run: | - curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | jq -r '.tag_name' > latest_version + curl -s https://api.github.com/repos/pocketbase/pocketbase/releases | jq -r '.[] | select(.prerelease == false and .draft == false) | .tag_name' | head -n 1 > latest_version id: latest_version - name: Print latest Pocketbase Version