diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d76a2e..cca9379 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,21 +32,14 @@ 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 @@ -54,16 +47,15 @@ jobs: 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 }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..a30e9b8 --- /dev/null +++ b/.goreleaser.yaml @@ -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"