blog.seike460.com

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

2018/05/20  Go  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を使ってます

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


@seike460
Written by @seike460
TechSlides
TagsList