This repository is a Go project template. This is not a real application, the go source code is an empty shell.
List of folders
cmdcontains source code of all compiled binaries, each sub-folder correspond to a binary.internalcontains source code that cannot be linked in an external project.pkgcontains source code that can be linked in an external project.testcontains integration tests source code (run with venom).githookscontains git hooks for better automation.
You need :
- Visual Studio Code (download) with the Remote - Containers extension installed.
- Docker Desktop (Windows, macOS) or Docker CE/EE (Linux)
Details are available on the official Visual Studio documentation.
Use the button Use this template at the top of this page. It will automatically initialize your new repository with this template.
$ cd </your/project/root>
/your/project/root$ wget -nv -O- https://github.com/adrienaury/go-template/archive/refs/heads/main.tar.gz | tar --strip-components=1 -xz
/your/project/root$ git init -b main
/your/project/root$ git add .
/your/project/root$ git commit -m "chore: init repository from go template"Warning: do this in a branch where to isolate the changes
$ cd </your/project/root>
/your/project/root$ wget -nv -O- https://github.com/adrienaury/go-template/archive/refs/heads/main.tar.gz | tar --strip-components=1 -xz- might: the
.vscodefolder contains a VSCode color theme, you might want to remove this folder, or customize the colors - might: the
githooks/commit-msgfile contains a commit message check to enforce semantic commit message - might: the
Makefileif you want to only use the neon build tool, but I think it's nice to give a well known handle to the build workflow - might: the
.githubfolder if you don't want to use GitHub actions - should: the
Dockerfileand theDockerfile.webserverif your project does not produce Docker images (DO NOT DELETE thedocker-compose.ymlfile, you can move it under.devcontainerand adapt paths) - should: the
LICENSEfile as your project is not copyrighted by me ! Replace it by your own license - should: everything under
test/suites, replace it with your own tests suites or remove thetestfolder completely if you don't do integration tests - should: every
.gofile will have to be deleted, as well as folders undercmd,pkgandinternal - should: this
README.mdfile, of course ;)
When opening the folder with Visual Studio Code, the Remote - Containers extension will detect the devcontainer configuration and ask you to reopen the project in a container.
Accept and enjoy !
- Structured Go code following folder names convention
- VSCode devcontainer pre-parameterized
- Auto code formatting, using EditorConfig extension
- Changelog, Contrib : all initialized with default templates
- Git commit message semantic validation
- Docker compatible (docker client and docker-compose are available inside the devcontainer)
- Pre-configured GitHub actions : CI on pull requests, Release on tag
- Build targets (run with
makeorneon) :help: default target, print help messageinfo: print information on the build pipelinepromote: promote the project to a new tag using semantic versioningrefresh: refresh go modules dependenciescompile: compile sourceslint: check the code for suspicious constructstest: run the unit testsrelease: compile binaries, with production flagstest-int: run integration tests with venompublish: publish binaries on Github with goreleaserdocker: build docker imagesdocker-tag: tag docker images using semantic versioningdocker-push: publish docker images on Dockerhublicense: scan binaries for 3rd party licenses and generate a notice file
Run a build target by using the neon command.
neon targetThis text bloc show how target are related to each other. E.g. running the target lint will also run info and refresh.
→ help
→ promote
→ info ┰ docker → docker-tag → docker-push
┖ refresh ┰ compile → license
┖ lint → test → release → test-int → publish
Multiple targets can be run in the same command, e.g. neon release docker-tag.
Neon targets are also mapped to a Makefile, so running make compile will produce the same result as running neon compile.
$ neon help
----------------------------------------------- help --
Available targets
help Print this message
info Print build informations
promote Promote the project with a new tag based on git log history
refresh Refresh go modules (add missing and remove unused modules) [info]
compile Compile binary files locally [info->refresh]
lint Examine source code and report suspicious constructs [info->refresh]
test Run all tests with coverage [info->refresh->lint]
release Compile binary files for production [info->refresh->lint->test]
test-int Run all integration tests [info->refresh->lint->test->release]
publish Publish tagged binary to Github [info->refresh->lint->test->release->test-int]
docker Build docker images [info]
docker-tag Tag docker images [info->docker]
docker-push Publish docker images to Dockerhub [info->docker->docker-tag]
license Scan licenses from binaries and generate notice file [info->refresh->compile]
Example: neon -props '{latest: true}' promote publish
Target dependencies
→ help
→ promote
→ info ┰ docker → docker-tag → docker-push
┖ refresh ┰ compile → license
┖ lint → test → release → test-int → publish
OKPrint build informations, like the author or the current tag.
$ neon info
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 00424c8c67bca5b11ed99efa0d45902f1143cbd7
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
OKPromote the project with a new tag based on git log history, or based on the parameter passed with -props flag.
Without parameter, the tag name will be determined by the git commit history since the last tag (or will be equal to v0.1.0 if there is no existing tag). This is base on the svu tool.
$ neon promote
--------------------------------------------- promote --
Promoted to v0.2.0
OKIt's possible to use the -props flag to override the name of the tag.
$ neon -props '{tag: "v0.2.1-alpha"}' promote
--------------------------------------------- promote --
Promoted to v0.2.1-alpha
OKRefresh go modules (add missing and remove unused modules).
This target will keep your go.mod and go.sum files clean.
$ neon refresh
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 00424c8c67bca5b11ed99efa0d45902f1143cbd7
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
OKCompile binary files locally.
By default, the cmd folder is scanned and each subfolder will create a binary with the name of the subfolder.
$ neon compile
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = b0b418aa05db7f386275249ea641f14b295cf3ab
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
--------------------------------------------- compile --
Building cmd/cli
Building cmd/webserver
OKIt's possible to use the -props flag to specify a list of folders to compile. Be aware that if one of these folders does not have a main package, the result file will not be executable.
$ neon -props '{buildpaths: ["internal/helloservice"]}' compile
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = b0b418aa05db7f386275249ea641f14b295cf3ab
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
--------------------------------------------- compile --
Building internal/helloservice
OKExamine source code and report suspicious constructs. Under the hood, the golangci-lint tool is used.
$ neon lint
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = b0b418aa05db7f386275249ea641f14b295cf3ab
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
------------------------------------------------ lint --
Running command: golangci-lint run --fast --enable-all --disable scopelint --disable forbidigo
OKBy default, all fast linters are enabled (--fast and --enable-all flags) but you can change this with the following build properties :
linters: an array of linters to enable, if left empty then all fast linters are enabled.lintersno: an array of linters to disable, by defaultscopelint(deprecated) andforbidigoare disabled.
To change the default values, edit the build.yml file and look for the properties names linters or lintersno.
These build properties can also be set by the neon -props flag.
$ neon -props '{linters: ["deadcode"]}' lint
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = b0b418aa05db7f386275249ea641f14b295cf3ab
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
------------------------------------------------ lint --
Running command: golangci-lint run --enable deadcode --disable scopelint --disable forbidigo
OKRun all tests with coverage.
$ neon test
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 6ac8d1ab1facb9969a84b330d08e0f3efac55819
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
------------------------------------------------ lint --
Running command: golangci-lint run --fast --enable-all --disable scopelint --disable forbidigo
------------------------------------------------ test --
? github.com/adrienaury/go-template/cmd/cli [no test files]
? github.com/adrienaury/go-template/cmd/webserver [no test files]
? github.com/adrienaury/go-template/internal/helloservice [no test files]
? github.com/adrienaury/go-template/pkg/nameservice [no test files]
OKCompile binary files for production.
The only difference with the compile target is with the ldflags passed to the Go linker (it will produce a smaller binary) and the dependency to other targets (lint and test).
$ neon release
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = b0b418aa05db7f386275249ea641f14b295cf3ab
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
------------------------------------------------ lint --
Running command: golangci-lint run --fast --enable-all --disable scopelint --disable forbidigo
------------------------------------------------ test --
? github.com/adrienaury/go-template/cmd/cli [no test files]
? github.com/adrienaury/go-template/cmd/webserver [no test files]
? github.com/adrienaury/go-template/internal/helloservice [no test files]
? github.com/adrienaury/go-template/pkg/nameservice [no test files]
--------------------------------------------- release --
Calling target 'compile'
--------------------------------------------- compile --
Building cmd/cli
Building cmd/webserver
OKThe build properties are the same as the compile target.
Run all integration tests. Under the hood the tool venom is used.
By default it will run every test suites under the folder test/suites.
neon test-int
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 9791b0c79b55f2f34517d7e6b64d4900c8c7f2ce
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
------------------------------------------------ lint --
Running command: golangci-lint run --fast --enable-all --disable scopelint --disable forbidigo
------------------------------------------------ test --
? github.com/adrienaury/go-template/cmd/cli [no test files]
? github.com/adrienaury/go-template/cmd/webserver [no test files]
? github.com/adrienaury/go-template/internal/helloservice [no test files]
? github.com/adrienaury/go-template/pkg/nameservice [no test files]
--------------------------------------------- release --
Calling target 'compile'
--------------------------------------------- compile --
Building cmd/cli
Building cmd/webserver
-------------------------------------------- test-int --
• run cli (test/suites/01-run-cli.yml)
• no-arguments SUCCESS
• run webserver (test/suites/02-run-webserver.yml)
• no-arguments SUCCESS
OKPublish tagged binary to Github (as a Release). Under the hood, the goreleaser tool is used.
Edit the file ./goreleaser.template.yml to configure the goreleaser build.
A prerequisite to this target is that a file named .github.yml at the home directory (~/.github.yml) contains a GITHUB_TOKEN property.
neon publish
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 00a4bdbf147a4394aa1e7f0483802f94658e9ce3
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- refresh --
go: creating new go.mod: module github.com/adrienaury/go-template
go: to add module requirements and sums:
go mod tidy
------------------------------------------------ lint --
Running command: golangci-lint run --fast --enable-all --disable scopelint --disable forbidigo
------------------------------------------------ test --
? github.com/adrienaury/go-template/cmd/cli [no test files]
? github.com/adrienaury/go-template/cmd/webserver [no test files]
? github.com/adrienaury/go-template/internal/helloservice [no test files]
? github.com/adrienaury/go-template/pkg/nameservice [no test files]
--------------------------------------------- release --
Calling target 'compile'
--------------------------------------------- compile --
Building cmd/cli
Building cmd/webserver
-------------------------------------------- test-int --
• run cli (test/suites/01-run-cli.yml)
• no-arguments SUCCESS
• run webserver (test/suites/02-run-webserver.yml)
• no-arguments SUCCESS
--------------------------------------------- publish --
• releasing...
• loading config file file=bin/.goreleaser.yml
• loading environment variables
• getting and validating git state
• releasing v0.1.0, commit 00a4bdbf147a4394aa1e7f0483802f94658e9ce3
• pipe skipped error=disabled during snapshot mode
• parsing tag
• running before hooks
• running go mod download
• setting defaults
• snapshotting
• github/gitlab/gitea releases
• project name
• loading go mod information
• building binaries
• creating source archive
• archives
• linux packages
• snapcraft packages
• calculating checksums
• signing artifacts
• docker images
• artifactory
• blobs
• homebrew tap formula
• scoop manifests
• milestones
• snapshotting
• checking ./dist
• --rm-dist is set, cleaning it up
• loading go mod information
• writing effective config file
• writing config=bin/dist/config.yaml
• generating changelog
• pipe skipped error=not available for snapshots
• building binaries
• building binary=/workspaces/go-template/bin/dist/cmd/cli_windows_386/cli.exe
• building binary=/workspaces/go-template/bin/dist/cmd/cli_darwin_arm64/cli
• building binary=/workspaces/go-template/bin/dist/cmd/cli_linux_arm64/cli
• building binary=/workspaces/go-template/bin/dist/cmd/cli_linux_386/cli
• building binary=/workspaces/go-template/bin/dist/cmd/cli_windows_amd64/cli.exe
• building binary=/workspaces/go-template/bin/dist/cmd/cli_darwin_amd64/cli
• building binary=/workspaces/go-template/bin/dist/cmd/cli_linux_amd64/cli
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_windows_386/webserver.exe
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_linux_amd64/webserver
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_linux_386/webserver
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_windows_amd64/webserver.exe
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_darwin_amd64/webserver
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_darwin_arm64/webserver
• building binary=/workspaces/go-template/bin/dist/cmd/webserver_linux_arm64/webserver
• archives
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_windows_386.tar.gz
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_linux_386.tar.gz
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_darwin_arm64.tar.gz
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_windows_amd64.tar.gz
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_linux_amd64.tar.gz
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_linux_arm64.tar.gz
• creating archive=bin/dist/go-template_v0.1.0-SNAPSHOT-00a4bdb_darwin_amd64.tar.gz
• creating source archive
• linux packages
• snapcraft packages
• calculating checksums
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_windows_amd64.tar.gz
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_darwin_arm64.tar.gz
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_linux_amd64.tar.gz
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_darwin_amd64.tar.gz
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_linux_arm64.tar.gz
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_windows_386.tar.gz
• checksumming file=go-template_v0.1.0-SNAPSHOT-00a4bdb_linux_386.tar.gz
• signing artifacts
• docker images
• publishing
• blobs
• http upload
• custom publisher
• artifactory
• docker images
• pipe skipped error=publishing is disabled
• docker manifests
• pipe skipped error=publishing is disabled
• snapcraft packages
• pipe skipped error=publishing is disabled
• github/gitlab/gitea releases
• pipe skipped error=publishing is disabled
• homebrew tap formula
• scoop manifests
• pipe skipped error=publishing is disabled
• milestones
• pipe skipped error=publishing is disabled
• release succeeded after 1.39s
OKThe build properties are the same as the compile target. Additionaly the snapshot property can be set to true to run the target without uploading anything to GitHub.
Build docker images locally.
Dockerfiles and build contexts are configured by the dockerfiles map. It'a map with Dockerfiles paths as keys and context paths as values. The default value is {"Dockerfile": ".", "Dockerfile.webserver", "."} which will build both Dockerfiles present at the root of this template with a build context equal to the current directory (root directory).
The images are named according to a few rules :
- if the source Dockerfile has an extension (e.g.
Dockerfile.webserver) then the image built will be named<DOCKERHUB_USER>/<PROJECT>-<EXTENSION>(e.g. :Dockerfile.webserverwill produce an image named<DOCKERHUB_USER>/<PROJECT>-webserver) - if the source Dockerfile hasn't an extension (e.g.
Dockerfile) then the image built will be named<DOCKERHUB_USER>/<PROJECT>
A prerequisite to this target is that a file named .dockerhub.yml at the home directory (~/.dockerhub.yml) contains a DOCKERHUB_USER property.
neon docker
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 9791b0c79b55f2f34517d7e6b64d4900c8c7f2ce
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- docker --
adrienaury/go-template refactor sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 Less than a second ago 20.6MB
adrienaury/go-template-webserver refactor sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 1 second ago 20.6MB
OKTo configure the docker target, edit the build.yml file and look for the property named dockerfiles.
The dockerfiles map can also be passed by the neon -props flag.
$ neon -props '{dockerfiles: {"Dockerfile": "."}}' docker
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = refactor
COMMIT = 9791b0c79b55f2f34517d7e6b64d4900c8c7f2ce
DATE = 2021-05-02
BY = [email protected]
RELEASE = no
--------------------------------------------- docker --
adrienaury/go-template refactor sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 7 minutes ago 20.6MB
OKTag docker images. This target will run only if the tag being built is a release tag (vX.Y.Z).
It will tag all docker images with semantic docker tags.
The build properties are the same as the docker target (a dockerfiles map).
$ neon docker-tag
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = v0.2.0
COMMIT = 00a4bdbf147a4394aa1e7f0483802f94658e9ce3
DATE = 2021-05-02
BY = [email protected]
RELEASE = yes
VERSION = 0.2.0
--------------------------------------------- docker --
adrienaury/go-template refactor sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0.2.0 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template-webserver refactor sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0.2.0 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
----------------------------------------- docker-tag --
adrienaury/go-template refactor sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0.2 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0.2.0 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template-webserver refactor sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0.2 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0.2.0 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
OKUse -props '{latest: true}' to include the latest tag.
$ neon -props '{latest: true}' docker-tag
----------------------------------------------- info --
MODULE = github.com/adrienaury/go-template
PROJECT = go-template
TAG = v0.2.0
COMMIT = 00a4bdbf147a4394aa1e7f0483802f94658e9ce3
DATE = 2021-05-02
BY = [email protected]
RELEASE = yes
VERSION = 0.2.0
--------------------------------------------- docker --
adrienaury/go-template refactor sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0.2.0 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template-webserver refactor sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0.2.0 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
----------------------------------------- docker-tag --
adrienaury/go-template latest sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template refactor sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0.2 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template v0.2.0 sha256:d05a1e1e5119aab03f3e3e33fa56d7db66ae5634beb53827b0e69fa168e3c595 20 minutes ago 20.6MB
adrienaury/go-template-webserver latest sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver refactor sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0.2 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
adrienaury/go-template-webserver v0.2.0 sha256:14b333b3679a64b3255e7c88e7211fa4b7502e2664e7b482373b392d5615414c 20 minutes ago 20.6MB
OKPublish tagged docker images to Dockerhub.
A prerequisite to this target is that a file named .dockerhub.yml at the home directory (~/.dockerhub.yml) contains a DOCKERHUB_USER property and a DOCKERHUB_PASS property.
The build properties are the same as the docker target and the docker-tag target combined (a dockerfiles map and the latest boolean).
Scan binaries for 3rd party licenses and generate a notice file, see the example notice generated by this target. Under the hood, the golicense tool is used.
This target work best if a file named .github.yml is present at the home directory (~/.github.yml) and contains a valid GITHUB_TOKEN property.
By default, this target write in ./NOTICE.md. Use -props '{noticefile: "a/different/filename.md"}' to change the location and name of the notice file.
License scanning can report an error if an unallowed license is detected. Configure the build property license, or use the neon -props flag to exclude/include license by SPDX identifier, or to map unknown license (see this link for more information).
Example : neon -props '{license: {deny: ["BSD-1-Clause"]}}' license
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.