golang-ci-template-github-actions

example for golang project using github actions

MIT License

Stars
57

golang ci template using github actions

Info

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!

Dependabot

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.

Creating a release

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.

Test coverage (coveralls)

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:

Author

(c) copyright 2021 by Jan Delgado, License MIT