Skip to content

jandelgado/golang-ci-template-github-actions

Repository files navigation

golang ci template using github actions

Build Status Coverage Status Go Report Card

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!

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 gcov2lcov-action to first convert the golang test coverage to lcov format and then upload it using the coveralls github action.

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:

pr screenshot

Author

(c) copyright 2021 by Jan Delgado