From f27e3194ccb0649916d00b2a1d9046231558866a Mon Sep 17 00:00:00 2001 From: Trevor Bramwell Date: Thu, 4 Apr 2024 14:58:09 -0700 Subject: [PATCH] Add GHA Workflow for Publishing image to GHCR Build the binary and container and publishes the image to GHCR as linuxfoundation/traefik Signed-off-by: Trevor Bramwell --- .github/workflows/publish.yml | 81 +++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000000..5338306425 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,81 @@ +name: Build and Publish Container + +# yamllint disable-line rule:truthy +on: + pull_request: + push: + branches: + - master + - v* + +jobs: + build-webui: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Build webui + run: | + make clean-webui generate-webui + tar czvf webui.tar.gz ./webui/static/ + - name: Artifact webui + uses: actions/upload-artifact@v3 + with: + name: webui.tar.gz + path: webui.tar.gz + publish: + name: Build & Push Container + runs-on: ubuntu-latest + if: github.repository == 'linuxfoundation/traefik' + environment: development + env: + CGO_ENABLED: 0 + needs: + - build-webui + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Go + uses: actions/setup-go@v5 + with: + golang-version: '1.21' + - name: Artifact webui + uses: actions/download-artifact@v3 + with: + name: webui.tar.gz + - name: Untar webui + run: tar xvf webui.tar.gz + - name: Build + run: make binary + - name: Login to Registry + id: login-ghcr + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ github.token }} + - uses: docker/setup-buildx-action@v3 + - name: Set Container Metadata + uses: docker/metadata-action@v5 + id: meta + with: + images: | + ${{ steps.login-ghcr.outputs.registry }}/traefik + tags: | + type=raw,value=latest,enable={{is_default_branch}} + type=ref,event=tag + type=sha + labels: | + org.opencontainers.image.source=${{ github.repositoryUrl }} + org.opencontainers.image.description=Traefik (LFX Fork) + - name: Build & Push Traefik Container + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile + build-args: TARGETPLATFORM=linux/amd64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + push: true