golangでリポジトリ作った時にするCI設定

新しいプロジェクトを始めたのでいつもサッとするCI設定をまとめてみました

dep導入

CIを回す時にたいてい必要なのでサッと導入します
インストールしてない場合は go getします

go get -u github.com/golang/dep

その後Repositoryのルートにて、dep用のファイルを作成

dep init

Gopkg.tomlGopkg.lockをリポジトリにPushしておきます
いつもはこの段階でCircleCIの設定(.circleci/config.yml)もPushします

CircleCI導入

FusicではCircleCIを利用していますので、僕もCircleCIを利用しています

CircleCIにてADD PROJECTS

Operating System にLinux、Language にGoを選択するとsampleが表示されますので
Repositoryに.circleci/config.ymlに配置します

私は少し修正して以下のような形で使ってます
このテンプレート使うとcoverageのアップロードを行ないます

@haya14busaさん作成の複数のパッケージをまとめてカバレッジするための
goverageを使ってます

version: 2
general:
artifacts:
- "coverage.out"
jobs:
build:
docker:
- image: circleci/golang:1.9
working_directory: /go/src/github.com/【アカウント】/【リポジトリ】
steps:
- checkout
- run: go get -u golang.org/x/lint/golint github.com/golang/dep/cmd/dep github.com/haya14busa/goverage
- run: golint ./...
- run: go vet ./...
- run: dep ensure
- run: goverage -v -coverprofile=coverage.out ./...
- run: go tool cover -html coverage.out -o coverage.html
- store_artifacts:
path: coverage.out
destination: coverage.out
- store_artifacts:
path: coverage.html
destination: coverage.html

その後CircleCIにSlackの設定やAWSの設定を行なってますが今回は割愛します

Scrutinizer導入

Scrutinizerにて Add Repository

Githubを選んでGithub Repositoryにリポジトリ名を入力
Default Configに「Go」を選択
Scrutinizerのcoverage Badgeを表示したいのでScrutinizerでもTestを走らせてます
Tests チェックしてAdd Repository

coverage を取りたいので設定変更します
左メニューのスパナを選んでConfigurationを選択します
Repository Configを変更します

checks:
go: true
build:
nodes:
analysis:
project_setup:
override:
- 'true'
environment:
go:
version: go1.9.2
tests:
override:
- command: go get -u github.com/haya14busa/goverage
- go-scrutinizer-run
- govet-run
- golint-run
-
command: goverage -v -coverprofile=coverage.out ./...
coverage:
file: 'coverage.out'
format: 'go-cc'

変更するとBadgeのcoverageが表示されます
BadgeはgithubのREADME.mdに記述しておきます
README.mdに記述する内容はTOP画面の
Badgesリンクを押下するとコピペする内容がわかります

README.mdにBadgeが表示されると気持ちいいです
※下記画像はプロジェクト開始直後に作成した、最高に気持ちいい状態です