seike460.hatenablog.com

試した技術などを書く

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

f:id:seike460:20180519211230p:plain

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

f:id:seike460:20180519211919p:plain

f:id:seike460:20180519211943p:plain

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

Scrutinizer導入

Scrutinizerにて Add Repository

f:id:seike460:20180519212027p:plain

Githubを選んでGithub Repositoryにリポジトリ名を入力
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

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

f:id:seike460:20180519212350p:plain

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