use goreleaser instead of a Makefile

Signed-off-by: Steffen Vogel <post@steffenvogel.de>
This commit is contained in:
Steffen Vogel
2022-01-06 15:08:54 +01:00
parent dc9e6b8dd3
commit 8d0f18e910
5 changed files with 220 additions and 49 deletions

View File

@@ -25,15 +25,18 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: '1.16.6'
go-version: 1.17
# Install all the dependencies
- name: Install dependencies
run: go get -u golang.org/x/lint/golint
run: go get -u golang.org/x/lint/golint
# Run build of the application
- name: Run build
run: make
- name: Run wice build
run: go build ./cmd/wice
- name: Run wicectl build
run: go build ./cmd/wicectl
# Run vet on the code
- name: Run vet
@@ -54,30 +57,3 @@ jobs:
reporter: github-pr-review
filter_mode: nofilter
fail_on_error: true
# The "deploy" workflow
deploy:
# The type of runner that the job will run on
runs-on: ubuntu-latest
needs: [build] # Only run this workflow when "build" workflow succeeds
if: ${{ github.ref == 'refs/heads/master' && github.event_name == 'push' }} # Only run this workflow if it is master branch on push event
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: user/app:latest

View File

@@ -1,23 +1,40 @@
name: goreleaser
on:
release:
types:
- created
pull_request:
push:
permissions:
contents: write
jobs:
linux:
goreleaser:
runs-on: ubuntu-latest
env:
DOCKER_CLI_EXPERIMENTAL: "enabled"
steps:
- uses: actions/checkout@v2
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16.6
- name: Make Directory with kgctl Binaries to Be Released
run: make release
- name: Publish Release
uses: skx/github-action-publish-binaries@master
env:
GITHUB_TOKEN: ${{ secrets.github_token }}
with:
args: 'build/wice-*'
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Docker Login
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.17
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
# either 'goreleaser' (default) or 'goreleaser-pro'
distribution: goreleaser
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
build/
test/logs/
.vscode/
dist/

172
.goreleaser.yaml Normal file
View File

@@ -0,0 +1,172 @@
---
project_name: wice
before:
hooks:
- go mod tidy
- go generate ./...
builds:
- id: wice
main: ./cmd/wice
binary: wice
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
goarch:
- amd64
- arm64
- arm
goarm:
- "6"
- "7"
- id: wicectl
main: ./cmd/wicectl
binary: wicectl
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
goarch:
- amd64
- arm64
- arm
goarm:
- "6"
- "7"
archives:
- builds:
- wice
- wicectl
format_overrides:
- goos: windows
format: zip
nfpms:
- vendor: stv0g
homepage: https://github.com/stv0g/wice/
maintainer: Steffen Vogel <post@steffenvogel.de>
license: Apache 2.0
formats:
- apk
- deb
- rpm
contents:
# manpages
- src: "./manpage/wice*.1"
dst: "/usr/share/man/man1"
# bash
- src: "./contrib/completion/bash/exo"
dst: "/usr/share/bash-completion/completions"
# zsh
- src: "./contrib/completion/zsh/_exo"
dst: "/usr/share/zsh/vendor-completions/_exo"
dockers:
- use: buildx
dockerfile: Dockerfile.scratch
goos: linux
goarch: amd64
image_templates:
- "stv0g/{{ .ProjectName }}:latest-amd64"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}-amd64"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}-amd64"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}.{{ .Patch }}-amd64"
build_flag_templates:
- --platform=linux/amd64
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ .Version }}
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.licenses=Apache-2.0
- use: buildx
dockerfile: Dockerfile.scratch
goos: linux
goarch: arm64
image_templates:
- "stv0g/{{ .ProjectName }}:latest-arm64v8"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}-arm64v8"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}-arm64v8"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}.{{ .Patch }}-arm64v8"
build_flag_templates:
- --platform=linux/arm64/v8
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ .Version }}
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.licenses=Apache-2.0
- use: buildx
dockerfile: Dockerfile.scratch
goos: linux
goarch: arm
goarm: "6"
image_templates:
- "stv0g/{{ .ProjectName }}:latest-armv6"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}-armv6"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}-armv6"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}.{{ .Patch }}-armv6"
build_flag_templates:
- --platform=linux/arm/v6
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ .Version }}
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.licenses=Apache-2.0
- use: buildx
dockerfile: Dockerfile.scratch
goos: linux
goarch: arm
goarm: "7"
image_templates:
- "stv0g/{{ .ProjectName }}:latest-armv7"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}-armv7"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}-armv7"
- "stv0g/{{ .ProjectName }}:v{{ .Major }}.{{ .Minor }}.{{ .Patch }}-armv7"
build_flag_templates:
- --platform=linux/arm/v7
- --label=org.opencontainers.image.title={{ .ProjectName }}
- --label=org.opencontainers.image.description={{ .ProjectName }}
- --label=org.opencontainers.image.url=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.source=https://github.com/stv0g/{{ .ProjectName }}
- --label=org.opencontainers.image.version={{ .Version }}
- --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }}
- --label=org.opencontainers.image.revision={{ .FullCommit }}
- --label=org.opencontainers.image.licenses=Apache-2.0
docker_manifests:
- name_template: stv0g/{{ .ProjectName }}:{{ .Version }}
image_templates:
- stv0g/{{ .ProjectName }}:{{ .Version }}-amd64
- stv0g/{{ .ProjectName }}:{{ .Version }}-armv6
- stv0g/{{ .ProjectName }}:{{ .Version }}-armv7
- stv0g/{{ .ProjectName }}:{{ .Version }}-arm64v8
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ incpatch .Version }}-next"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'

4
Dockerfile.scratch Normal file
View File

@@ -0,0 +1,4 @@
FROM scratch
ENTRYPOINT ["/wice"]
COPY wice /
COPY wicectl /