Skip to content

Commit

Permalink
feat: goreleaser
Browse files Browse the repository at this point in the history
Setup GoReleaser for app distribution.
  • Loading branch information
faabiosr committed Oct 21, 2023
1 parent b276fe7 commit a1e862c
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 2 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: release

on:
push:
tags:
- 'v*'

jobs:
release:
name: release
runs-on: [ubuntu-latest]

steps:
- name: checkout the code
uses: actions/checkout@v3

- name: setup go
uses: actions/setup-go@v4
with:
go-version: '1.21.x'

- name: unshallow
run: git fetch --prune --unshallow

- name: run goreleaser
uses: goreleaser/goreleaser-action@v4
with:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
14 changes: 13 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
uses: actions/checkout@v3

- name: setup go
uses: actions/setup-go@v3
uses: actions/setup-go@v4
with:
go-version: '1.21.x'

Expand All @@ -30,9 +30,21 @@ jobs:
with:
version: v1.53.3

- name: configure
run: make configure

- name: build
run: make build

- name: run unit tests
run: make test

- name: run goreleaser
uses: goreleaser/goreleaser-action@v4
with:
version: latest
args: check

- name: upload code coverage
uses: codecov/codecov-action@v3.1.1
if: contains(github.ref, 'main')
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ cover*
vendor
build
data/
dist/
58 changes: 58 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# This is an example .goreleaser.yml file with some sensible defaults.
# Make sure to check the documentation at https://goreleaser.com
project_name: "movies"
before:
hooks:
- go mod tidy
- make clean

builds:
- id: movies
main: ./cmd/movies/
binary: movies
env:
- CGO_ENABLED=0
goos:
- linux
goarch:
- amd64
ldflags:
- "-s"
- "-w"
- "-X main.appVersion={{ .Version }}"
- "-X main.osArch={{ .Os }}/{{ .Arch }}"

archives:
- id: movies
format: tar.gz
builds:
- movies
name_template: >-
{{ .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else }}{{ .Arch }}{{ end }}
nfpms:
- id: movies
builds:
- movies
package_name: movies
file_name_template: "{{ .ConventionalFileName }}"
vendor: Fabio Ribeiro
homepage: https://fabioribeiro.dev
maintainer: Fabio Ribeiro <me@fabioribeiro.dev>
description: Manages movie collection throught API
license: MIT
formats:
- deb

checksum:
name_template: '{{ .ProjectName }}_checksums.txt'

changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
.DEFAULT_GOAL := help

build: ## builds the app (only for testing purpose)
@go build -v -o ./build/movies ./cmd/movies
.PHONY: build

clean: ## clean up files generated by coverage or go mod
@rm -fR ./vendor/ ./cover.* ./build/
@rm -fR ./vendor/ ./cover.* ./build/ ./dist/
.PHONY: clean

configure: ## creates folders and download dependencies
Expand All @@ -30,6 +31,10 @@ lint: ## golangci linters
@golangci-lint run ./...
.PHONY: lint

release: ## runs the goreleaser and creates the release for local testing.
@goreleaser release --snapshot
.PHONY: release

run: ## runs application
@go run ./cmd/movies
.PHONY: run
Expand Down

0 comments on commit a1e862c

Please sign in to comment.