diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 00000000..b1109ad5 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,53 @@ +name: Docker - Deploy +on: + workflow_call: + inputs: + docker_tags: + required: true + type: string + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + permissions: + contents: write # required to upload release asset + packages: write + steps: + - name: Check it out + uses: actions/checkout@v4 + + - name: 📥 Download artifact + uses: actions/download-artifact@v4 + with: + name: build-output + path: dist + + - name: Log in to container registry + uses: docker/login-action@5f4866a30a54f16a52d2ecb4a3898e9e424939cf + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@c314eea2b27e3cb3c7d7be0618510234d8f6178e + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: ${{ input.docker_tags}} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb + + - name: Build and push Docker image + uses: docker/build-push-action@f8bc7f46003ef0cf98b715743d86c2f1ccd01436 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/pr-deploy.yaml b/.github/workflows/pr-deploy.yaml index 37425824..a375a187 100644 --- a/.github/workflows/pr-deploy.yaml +++ b/.github/workflows/pr-deploy.yaml @@ -41,4 +41,14 @@ jobs: secrets: ELEMENT_BOT_TOKEN: ${{ secrets.ELEMENT_BOT_TOKEN }} NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} - NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} \ No newline at end of file + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + + docker: + needs: prdetails + if: ${{ needs.prdetails.outputs.pr_data_json && contains(fromJSON(needs.prdetails.outputs.pr_data_json).labels.*.name, 'docker build') }} + uses: ./.github/workflows/docker.yaml + with: + pr_number: ${{ needs.prdetails.outputs.pr_number }} + docker_tags: | + type=sha,format=short,event=branch + type=raw,value=pr_${{ needs.prdetails.outputs.pr_number }}