Tooling for linting, testing and building Go applications
- Project home
- Overview
- Linting tools included
- Docker images
- Examples / How to use these images
- Changelog
- Requirements
- References
See our GitHub repo for the latest content, to file an issue or submit improvements for review and potential inclusion into the project.
See our Docker Hub repo for the full listing of available container images.
A mix of GitHub Actions / CI focused Docker containers primarily intended to simplify linting/testing/building other Go projects that I maintain. I am developing the content in the open in case what I learn here in this project is useful to others.
Linter | Version |
---|---|
staticcheck |
2021.1.1 (v0.2.1 ) |
golangci-lint |
v1.43.0 |
orijtech/httperroryzer |
v0.0.1 |
orijtech/structslop |
v0.0.6 |
pelletier/go-toml/cmd/tomll |
v1.9.4 |
fatih/errwrap |
v1.3.1 |
See our Docker Hub repo for the full listing of available container images.
- built from the latest version of the current stable
golang
image. - used for building Go applications, both directly and via
Makefile
builds. - intended for use in a build/test matrix of prior, current and upcoming Go releases
- provides multiple linters
- based on the latest version of the current stable
i386/golang
alpine
image. - used for building Go applications, both directly and via
Makefile
builds. - uses musl libc instead of glibc
- supports cross-platform, static cgo-enabled builds for Windows and Linux
- Windows 32-bit:
i686-w64-mingw32-gcc
- Windows 64-bit:
x86_64-w64-mingw32-gcc
- Windows 32-bit:
- does not include linters
- same as
go-ci-stable-alpine-buildx86
, but specific to x64 architecture - does not include linters
- built from the latest version of the current stable
golang
image. - used for building Go applications, both directly and via
Makefile
builds. - supports cross-platform, static cgo-enabled builds for Windows and Linux
- Windows 32-bit:
i686-w64-mingw32-gcc
- Windows 64-bit:
x86_64-w64-mingw32-gcc
- Windows 32-bit:
- provides multiple linters
- built from the latest version of the current outgoing stable
golang
image. - used for building Go applications, both directly and via
Makefile
builds. - intended for use in a build/test matrix of prior, current and upcoming Go releases
- provides multiple linters
- built from the latest available non-stable
golang:rc
image or if not recently available, the latest stablegolang
image- intended to test whether new Go versions break existing code or surface problems in existing code that current Go releases do not
- used for building Go applications, both directly and via
Makefile
builds - intended for use in a build/test matrix of prior, current and upcoming Go releases
- provides multiple linters
- used to test new or additional
golangci-lint
linters prior to inclusion in thestable
andoldstable
container variants- new linters as a whole may be added to multiple image variants, not just this image unless it is suspected that the new linters are highly experimental/unstable
- smaller image
- uses
golangci/golangci-lint:vX.Y.Z-alpine
image as base - created as part of a multi-stage container build
- intended for lightweight testing of iterative branch changes
- e.g., testing or squash/rebase branch work prior to a full suite of checks usually associated with Pull Requests
- limited linters
For real-world examples of how these images are used, please see the workflows for these projects:
- https://github.com/atc0005/check-mail/blob/master/.github/workflows
- https://github.com/atc0005/dnsc/tree/master/.github/workflows
- https://github.com/atc0005/mysql2sqlite/tree/master/.github/workflows
See the CHANGELOG.md
file for the changes associated with
each release of this application. Changes that have been merged to master
,
but not yet an official release may also be noted in the file under the
Unreleased
section. A helpful link to the Git commit history since the last
official release is also provided for further review.
- Docker
- for building images
make
- if using the provided
Makefile
- if using the provided
-
Linting
- Primary
- Additional
-
Images