Skip to content

Commit

Permalink
ci: build multi-platform Docker images using goreleaser
Browse files Browse the repository at this point in the history
release-as: 0.3.1
closed #22
  • Loading branch information
MuXiu1997 committed Nov 15, 2023
1 parent b17f6a2 commit 8864d46
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 19 deletions.
30 changes: 11 additions & 19 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,38 +32,30 @@ jobs:
with:
ref: ${{ steps.release.outputs.tag_name }}

- name: Build
if: ${{ steps.release.outputs.release_created }}
run: make

- name: Upload Release Assets
if: ${{ steps.release.outputs.release_created }}
env:
GH_TOKEN: ${{ github.token }}
run: gh release upload ${{ steps.release.outputs.tag_name }} dist/*

# region Docker
- name: Set up Docker Buildx
if: ${{ steps.release.outputs.release_created }}
uses: docker/setup-buildx-action@v2

- name: Set up QEMU
if: ${{ steps.release.outputs.release_created }}
uses: docker/setup-qemu-action@v2

- name: Login to Docker Hub
if: ${{ steps.release.outputs.release_created }}
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build And Push Docker Images
- name: Go Release
if: ${{ steps.release.outputs.release_created }}
uses: docker/build-push-action@v3
uses: goreleaser/goreleaser-action@v4
env:
GITHUB_TOKEN: ${{ github.token }}
with:
context: .
file: ./Dockerfile
push: true
tags: |
muxiu1997/traefik-github-oauth-server:${{ steps.release.outputs.tag_name }}
muxiu1997/traefik-github-oauth-server:latest
distribution: goreleaser
version: latest
args: release

- name: Replace The Relative Path In The README.md
if: ${{ steps.release.outputs.release_created }}
Expand Down
114 changes: 114 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# doc: https://goreleaser.com
project_name: traefik-github-oauth-server

before:
hooks:
- go mod tidy

builds:
- id: traefik-github-oauth-server
main: ./cmd/traefik-github-oauth-server
env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
goarch:
- amd64
- "386"
- arm64
- arm
ldflags:
- -s
- -w
- -X main.version={{ .Version }}
- -X main.commit={{ .Commit }}
- -X main.date={{ .Date }}
- -X main.builtBy=goreleaser
mod_timestamp: "{{ .CommitTimestamp }}"

dockers:
- use: buildx
goos: linux
goarch: amd64
image_templates:
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-amd64"
- "muxiu1997/{{ .ProjectName }}:latest-amd64"
build_flag_templates:
- "--platform=linux/amd64"
- "--pull"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"
- use: buildx
goos: linux
goarch: "386"
image_templates:
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-i386"
- "muxiu1997/{{ .ProjectName }}:latest-i386"
build_flag_templates:
- "--platform=linux/386"
- "--pull"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"
- use: buildx
goos: linux
goarch: arm64
image_templates:
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-arm64"
- "muxiu1997/{{ .ProjectName }}:latest-arm64"
build_flag_templates:
- "--platform=linux/arm64"
- "--pull"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"
- use: buildx
goos: linux
goarch: arm
image_templates:
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-arm"
- "muxiu1997/{{ .ProjectName }}:latest-arm"
build_flag_templates:
- "--platform=linux/arm/v6"
- "--pull"
- "--label=org.opencontainers.image.created={{ .Date }}"
- "--label=org.opencontainers.image.title={{ .ProjectName }}"
- "--label=org.opencontainers.image.revision={{ .FullCommit }}"
- "--label=org.opencontainers.image.version={{ .Version }}"

docker_manifests:
- name_template: "muxiu1997/{{ .ProjectName }}:{{ .Version }}"
image_templates:
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-amd64"
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-i386"
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-arm64"
- "muxiu1997/{{ .ProjectName }}:{{ .Version }}-arm"
- name_template: "muxiu1997/{{ .ProjectName }}:latest"
image_templates:
- "muxiu1997/{{ .ProjectName }}:latest-amd64"
- "muxiu1997/{{ .ProjectName }}:latest-i386"
- "muxiu1997/{{ .ProjectName }}:latest-arm64"
- "muxiu1997/{{ .ProjectName }}:latest-arm"

archives:
- id: tar.gz
format: tar.gz
name_template: '{{ .ProjectName }}_{{ .Os }}_{{ if eq .Arch "386" }}i386{{ else }}{{ .Arch }}{{ end }}'
# use zip for windows archives
format_overrides:
- goos: windows
format: zip
- id: binary
format: binary
name_template: '{{ .ProjectName }}_{{ .Os }}_{{ if eq .Arch "386" }}i386{{ else }}{{ .Arch }}{{ end }}'

checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ .Version }}-next"

0 comments on commit 8864d46

Please sign in to comment.