Skip to content

Commit

Permalink
Add GHA Workflow for Publishing image to GHCR
Browse files Browse the repository at this point in the history
Build the binary and container and publishes the image to GHCR as
linuxfoundation/traefik

Signed-off-by: Trevor Bramwell <tbramwell@linuxfoundation.org>
  • Loading branch information
bramwelt committed Apr 4, 2024
1 parent cd84a3e commit f27e319
Showing 1 changed file with 81 additions and 0 deletions.
81 changes: 81 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit f27e319

Please sign in to comment.