We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
James is your butler and helps you to create, build, debug, test and run your Go projects.
When you often create new apps using Go, it quickly becomes annoying when you realize all the steps it takes to configure the basics. You need to manually create the source files, version info requires more steps to be injected into the executable, using Visual Studio Code requires you to manually setup the tasks you want to run…
Using the go-james
tool, you can automate and streamline this process. The tool will take care of initializing your project, running your project, debugging it, building it and running the tests.
In version 1.5.0, the followings things are changed/updated/fixed:
- We have added support for creating Docker images.
- Integration of the staticcheck analyzer
- Default VSCode settings when creating a new project
You can find a list of fixed issues in the milestone.
Docker Support
When you craete a new project or run the init
command on an existing project, we now add a .dockerignore
file and a sample Dockerfile
. The Dockerfile
is a multi-stage docker build you can use as a starting point to customize:
FROM golang:alpine AS mod-download
RUN apk update && apk add git && rm -rf /var/cache/apk/*
RUN GO111MODULE=on go get -u github.com/pieterclaerhout/go-james/cmd/go-james
RUN mkdir -p /app
ADD go.mod /app
ADD go.sum /app
WORKDIR /app
RUN go mod download
FROM mod-download AS builder
ADD . /app
WORKDIR /app
RUN CGO_ENABLED=0 go-james build -v
FROM scratch
COPY --from=builder "/app/build/go-example" /
ENTRYPOINT ["/go-example"]
Firstly, you'll see that we are using the latest Go version running on Alpine Linux. This works great and is a pretty small image to use.
We use go-james
(obviously) to do the actual building. As this is a multi-stage build, we first download all the needed modules and cache them for later. The next time you run the build and if the dependencies are not changed, they will not be redownloaded.
The final binary runs using the scratch
image which is the smallest Docker image you can create. To build the image, you just need to run:
go-james docker-image
Staticcheck
In version 1.5.0, we also integrated the staticcheck tool. For those not familiar with it, staticcheck is static analysis toolset for the Go programming language. It comes with a large number of checks, integrates with various Go build systems and offers enough customizability to fit into your workflows. It can analyze your source code and offer loads of tips, tricks and suggestions on how it can be optimized.
There is a whole list of checks it supports which can be found here. By default, all checks are enabled except for the following ones:
These default settings can be changed in the configuration file:
{
"project": {
"name": "go-example",
"version": "1.0.0",
"description": "",
"copyright": "",
"main_package": "github.com/pieterclaerhout/go-example/cmd/go-example"
},
"staticcheck": {
"checks": [
"all",
"-ST1005",
"-ST1000"
]
}
}
Visual Studio Code settings
When you create a new project or init an existing project, a .vscode/settings.json
file is now also created.
It's main purpose is to ignore files which shouldn't be watched or searched.
Download
You can download version 1.5.0 from here.
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.