
Announcing go-james 1.6.0
28 May 2020 #golang #opensource #tool
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.6.0, the followings things are changed/updated/fixed:
- Added the option to build and publish your app as a Docker image
- Added the option to create a GitHub action
- Conditional create commands
- Added support for installing go-james via Homebrew
- Smaller bugfixes
You can find a list of fixed issues in the milestone.
Publish a Docker container
When you create a new project with docker files, it will also allow you to specify the repository to which the image should be pushed:
"docker-image": { "name": "go-james", "repository": "pieterclaerhout/go-james", "tag": "version", "prune_images_after_build": true}
Additionally, you can specify a couple of extra settings:
-
tag
: eitherrelease
orversion
which indicates which of the two values should be used as the tag of the image. -
prune_images_after_build
: executesdocker image prune -f
after building the image.
GitHub Action
If you add the option --with-github-action
, the following sample GitHub action file will be created under .github/workflows/build.yaml
. It will test, run staticcheck and build the app storing the resulting assets.
name: Build and Publish on: [push] jobs: build-test-staticcheck: name: Build, Test and Check runs-on: ubuntu-latest steps: - name: Set up Go 1.14 uses: actions/setup-go@v1 with: go-version: 1.14 id: go - name: Environment Variables uses: FranzDiebold/github-env-vars-action@v1.0.0 - name: Check out code into the Go module directory uses: actions/checkout@v2 with: lfs: true - name: Restore Cache uses: actions/cache@preview id: cache with: path: ~/go/pkg key: 1.14-${{ runner.os }}-${{ hashFiles('**/go.sum') }} - name: Get go-james run: | go get -u github.com/pieterclaerhout/go-james/cmd/go-james - name: Get dependencies run: | go get -v -t -d ./... - name: Build run: | export PATH=${PATH}:`go env GOPATH`/bin go-james build - name: Test run: | export PATH=${PATH}:`go env GOPATH`/bin go-james test - name: Staticcheck run: | export PATH=${PATH}:`go env GOPATH`/bin go-james staticcheck - name: Package run: | export PATH=${PATH}:`go env GOPATH`/bin go-james package - uses: actions/upload-artifact@v2 name: Publish with: name: ${{ env.GITHUB_REPOSITORY_NAME }}-${{ env.GITHUB_SHA_SHORT }}-${{ env.GITHUB_REF_NAME }}.zip path: build/*.*
Conditional create commands
The option --create-git-repo
has been renamed to --with-git
which is easier to remember and less confusing. Two additional ones were added (both false
by default):
-
--with-docker
: creates the.dockerignore
andDockerfile
files -
--with-github-action
: creates a sample.github/workflows/build.yaml
file
Install via homebrew
To make the install easier, you can now install via homebrew:
First, install the correct tap.
$ brew tap pieterclaerhout/go-james==> Tapping pieterclaerhout/go-jamesCloning into '/usr/local/Homebrew/Library/Taps/pieterclaerhout/homebrew-go-james'...remote: Enumerating objects: 4, done.remote: Counting objects: 100% (4/4), done.remote: Compressing objects: 100% (4/4), done.remote: Total 4 (delta 0), reused 4 (delta 0), pack-reused 0Receiving objects: 100% (4/4), done.Tapped 1 formula (27 files, 26.5KB).
Then, install (or update):
$ brew install go-james==> Installing go-james from pieterclaerhout/go-james==> Downloading https://github.com/pieterclaerhout/go-james/releases/download/v1.6.0/go-james_darwin_amd64.tar.gz######################################################################## 100.0%🍺 /usr/local/Cellar/go-james/1.6.0: 4 files, 11.5MB, built in 3 seconds
Download
You can download version 1.6.0 from here.