golangでリポジトリ作った時にするCI設定
新しいプロジェクトを始めたのでいつもサッとするCI設定をまとめてみました
dep導入
CIを回す時にたいてい必要なのでサッと導入します
インストールしてない場合は go get
します
go get -u github.com/golang/dep
その後Repositoryのルートにて、dep用のファイルを作成
dep init
Gopkg.toml
とGopkg.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が表示されると気持ちいいです
※下記画像はプロジェクト開始直後に作成した、最高に気持ちいい状態です