blog.seike460.com

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

2 min read

新しいプロジェクトを始めたのでいつもサッとする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

f:id:seike460:20180519211230p:plain

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

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

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

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

f:id:seike460:20180519211919p:plain

f:id:seike460:20180519211943p:plain

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

Scrutinizer導入

Scrutinizerにて Add Repository

f:id:seike460:20180519212027p:plain

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

f:id:seike460:20180519212124p:plain

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

f:id:seike460:20180519212205p:plain

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リンクを押下するとコピペする内容がわかります

f:id:seike460:20180519212350p:plain

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