This repository serves as a template for github-actions integrated go projects.
It consists of a hello, world!
like example in source file main.go
which gets compiled into the binary golang-ci-template-github-actions
. The CI
runs some linters on the
code, before the unit tests are executed. Test coverage is uploaded to
coveralls.io.
goreleaser is used to create the final multi-plattform assets, which are automatically uploaded to the release. The release-process is triggered by pushing a git tag to the repository.
Finally, a docker image is built, which gets published to ghcr.io. Run it with
$ docker run --rm ghcr.io/jandelgado/golang-ci-template-github-actions:latest
hello, world!
We use dependabot to both keep the go dependencies as well as the used github action up-to-date. The configuration can be found here.
A new release is created by creating a git tag and pushing it, e.g.:
$ git tag -a "v1.2.3" -m "this is release v1.2.3"
$ git push origin v1.2.3
The push of the new tag triggers the CI, which uses goreleaser to:
- build multiplatform release artifacts
- create a new release
- upload the artifacts, which are then available on the releases page.
Finally, a docker image is built, which gets published to ghcr.io.
We use the coveralls-github-action to upload the golang coverage to coveralls.
Don't forget to enable Leave comments (x)
in coveralls, under repo settings
> pull request alerts
, so that the coveralls-action posts a comment
with the test coverage to affected pull requests:
(c) copyright 2021 by Jan Delgado, License MIT