CircleCI + Go 言語が楽になっていた

CircleCI の config.yml の様々が不要になっていた

従来の Go 言語プロジェクトの .circleci/config.yml では GOPATH を設定したり GO111MODULE を設定したり、様々なケアが必要でした。

しかし現在の circleci/golang:latest (1.13 ぐらい?) では Go Modules も有効になっているようで GO111MODULE さえも必要なく、普通に get -> test -> build が行えます。

---
version: 2
jobs:
  build:
    docker:
      - image: circleci/golang:latest
    steps:
      - checkout

      - restore_cache:
          key: mod-{{ checksum "go.sum" }}

      - run: go get
      - run: go test -v ./...
      - run: go build -o main main.go

      - store_artifacts:
          path: main
          destination: main

      - save_cache:
          key: mod-{{ checksum "go.sum" }}
          paths:
            - $GOPATH/pkg/mod

もちろん go mod init で Go Modules を使うプロジェクトが前提になるでしょうが、かなりお気楽に CI できるようになってよいですね。