v1.22.0 #37
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Docker Image | |
| on: | |
| workflow_dispatch: | |
| release: | |
| types: | |
| - published | |
| permissions: | |
| contents: read | |
| jobs: | |
| docker: | |
| if: github.repository == 'I-am-PUID-0/traefik-proxy-admin' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v4 | |
| with: | |
| platforms: arm64 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v4 | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v4 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Docker metadata | |
| id: meta | |
| uses: docker/metadata-action@v6 | |
| with: | |
| images: ${{ secrets.DOCKER_USERNAME }}/traefik-proxy-admin | |
| tags: | | |
| type=raw,value=latest,enable=${{ !github.event.release.prerelease }} | |
| type=semver,pattern={{version}} | |
| type=sha,prefix=sha- | |
| - name: Build and push image | |
| uses: docker/build-push-action@v7 | |
| with: | |
| context: . | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max | |
| announce: | |
| if: >- | |
| github.repository == 'I-am-PUID-0/traefik-proxy-admin' && | |
| github.event_name == 'release' | |
| needs: docker | |
| runs-on: ubuntu-latest | |
| env: | |
| DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} | |
| RELEASE_NOTES: ${{ github.event.release.body }} | |
| RELEASE_PRERELEASE: ${{ github.event.release.prerelease }} | |
| RELEASE_TAG: ${{ github.event.release.tag_name }} | |
| RELEASE_URL: ${{ github.event.release.html_url }} | |
| steps: | |
| - name: Announce release on Discord | |
| shell: bash | |
| run: | | |
| set -Eeuo pipefail | |
| if [[ -z "${DISCORD_WEBHOOK_URL}" ]]; then | |
| echo "::error::DISCORD_WEBHOOK_URL is not configured" | |
| exit 1 | |
| fi | |
| ANNOUNCEMENT_BODY="$( | |
| python3 <<'PY' | |
| import os | |
| release_tag = os.environ["RELEASE_TAG"] | |
| image_tag = release_tag.removeprefix("v") | |
| release_kind = ( | |
| "prerelease" | |
| if os.environ.get("RELEASE_PRERELEASE", "").lower() == "true" | |
| else "release" | |
| ) | |
| release_notes = os.environ.get("RELEASE_NOTES", "").strip() | |
| if not release_notes: | |
| release_notes = "See the GitHub release for details." | |
| message = f"""🚀 **Traefik Proxy Admin {release_tag} is now available** | |
| A new {release_kind} has been published and its multi-architecture Docker image is ready. | |
| **Release notes** | |
| {release_notes} | |
| **Links** | |
| - GitHub release: {os.environ["RELEASE_URL"]} | |
| - Docker Hub: https://hub.docker.com/r/iampuid0/traefik-proxy-admin | |
| - Community: https://discord.gg/gZMPaWB9xK | |
| ```shell | |
| docker pull iampuid0/traefik-proxy-admin:{image_tag} | |
| ```""" | |
| limit = 1900 | |
| if len(message) > limit: | |
| message = message[: limit - 3].rstrip() + "..." | |
| print(message) | |
| PY | |
| )" | |
| jq -n \ | |
| --arg content "${ANNOUNCEMENT_BODY}" \ | |
| '{content: $content, flags: 4, allowed_mentions: {parse: []}}' \ | |
| > "${RUNNER_TEMP}/discord-payload.json" | |
| curl \ | |
| --fail-with-body \ | |
| --silent \ | |
| --show-error \ | |
| --header "Content-Type: application/json" \ | |
| --data-binary "@${RUNNER_TEMP}/discord-payload.json" \ | |
| "${DISCORD_WEBHOOK_URL}" |