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.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-james
Cloning 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 0
Receiving 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.
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.