From 10fbf614dfacb82e50b03e9f3fff260c1b6e56aa Mon Sep 17 00:00:00 2001 From: Javier Martinez Date: Mon, 5 Aug 2024 16:18:34 +0200 Subject: [PATCH] fix(deploy): generate docker release when new version is released (#2038) --- .github/workflows/docker.yml | 45 -------------- .github/workflows/generate-release.yml | 83 ++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 45 deletions(-) delete mode 100644 .github/workflows/docker.yml create mode 100644 .github/workflows/generate-release.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 259cf5da2..000000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: docker - -on: - release: - types: [ published ] - workflow_dispatch: - -env: - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - -jobs: - build-and-push-image: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - name: Log in to the Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=sha - - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - file: Dockerfile.external - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/generate-release.yml b/.github/workflows/generate-release.yml new file mode 100644 index 000000000..b84c3fa4d --- /dev/null +++ b/.github/workflows/generate-release.yml @@ -0,0 +1,83 @@ +name: generate-release + +on: + release: + types: [ published ] + workflow_dispatch: + +env: + REGISTRY: docker.io + IMAGE_NAME: ${{ github.repository }} + platforms: linux/amd64,linux/arm64 + DEFAULT_TYPE: "external" + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + + strategy: + matrix: + type: [ local, external ] + + permissions: + contents: read + packages: write + + outputs: + version: ${{ steps.version.outputs.version }} + + steps: + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: false + swap-storage: true + + - 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: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=semver,pattern={{version}},enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=semver,pattern={{version}}-${{ matrix.type }} + type=semver,pattern={{major}}.{{minor}},enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=semver,pattern={{major}}.{{minor}}-${{ matrix.type }} + type=raw,value=latest,enable=${{ matrix.type == env.DEFAULT_TYPE }} + type=sha + flavor: | + latest=false + + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.${{ matrix.type }} + platforms: ${{ env.platforms }} + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + + - name: Version output + id: version + run: echo "version=${{ steps.meta.outputs.version }}" >> "$GITHUB_OUTPUT" \ No newline at end of file