iamnotaturtle / go-ci

Working with CI/CD with Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Go CI/CD

Repo to practice CI/CD setup for go

Overview

Nice setup for any go repo. Goal is to minimize the number of repetative work done during development.

Building / Testing

Done with an action to setup go, build test and upload benchmarks.

Benchmark

Converts go test coverage into lcov format and displays it via github-pages.

https://iamnotaturtle.github.io/go-ci/dev/bench/

Linting

Handled by golangci-lint which has multiple linters and uses govet.

Auto formatting

Handled by a stricter formatter gofumpt which formats code on pull requests.

Releases

Releases work in two ways: by auto releasing the latest build and by creating a release if a tag is made.

Deploys

Deployment is done via a Heroku. Review apps are deployed for a PR when status checks are passed. A staging app is deployed automatically on each merge to master.

TODO

  • error tracking (ex: sentry)
  • logs
  • security scanning (could be handled by dependabot)

About

Working with CI/CD with Go

License:MIT License


Languages

Language:Go 100.0%