Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CircleCI Go Code Inspection

CircleCI Go Code Inspection

GoプロジェクトでのCircleCIによるコード検査 について #circlecijp

Kazuki Higashiguchi
PRO

May 28, 2019
Tweet

More Decks by Kazuki Higashiguchi

Other Decks in Technology

Transcript

  1. © - BASE, Inc. X
    Goプロジェクトでの
    CircleCIによるコード検査
    . . #circlecijp- @hgsgtk

    View Slide

  2. © - BASE, Inc.
    : @hgsgtk
    ⾃⼰紹介
    東⼝ 和暉 ( Higashiguchi Kazuki )
    サーバーサイドエンジニア
    BASE BANK, Inc
    CircleCIに
    チョットお世話になってます

    View Slide

  3. © - BASE, Inc.
    このトークで得られること
    • GoプロジェクトにおけるCircleCIの活⽤事例
    • 「どういうチェックしてる?」
    • Lint‧テスト実⾏する config.yml
    • 「実際、どう設定するの?」
    • プロジェクトでのCircleCI活⽤⽅法振り返り知⾒
    • 「こういう活⽤の仕⽅は良かった。」

    View Slide

  4. © - BASE, Inc.
    お題⽬
    • プロジェクトにおけるCircleCI利⽤の全体像
    • コード検査を⾏うための config.yml の中⾝
    • CircleCIを利⽤したプロジェクトの振り返り

    View Slide

  5. © - BASE, Inc.
    プロジェクトにおけるCircleCI利⽤の全体像
    https://devblog.thebase.in/entry/ / / /

    View Slide

  6. © - BASE, Inc.
    プロジェクトにおけるCircleCI利⽤の全体像
    https://devblog.thebase.in/entry/ / / /
    このトークの
    スコープ

    View Slide

  7. © - BASE, Inc.
    全体像 .circleci/config.yml (コード検査部分)

    View Slide

  8. 完全に理解
    しましたね?

    View Slide

  9. © - BASE, Inc.
    全体像 .circleci/config.yml (コード検査部分)
    . 依存パッケージ解決
    . フォーマットチェック
    . Lintチェック
    . ビルド‧テスト
    . 循環複雑度計測

    View Slide

  10. © - BASE, Inc.
    1. 依存パッケージ解決
    • Goの依存パッケージ関係
    解決に Go Modules を利

    • See also: https://circleci.com/
    blog/go-v . -modules-and-
    circleci/
    • circleci/golang >= . . を利⽤
    • Go . MODULE = “on”

    View Slide

  11. © - BASE, Inc.
    2. フォーマットチェック
    • `go fmt`でフォーマット
    チェック
    • ※ 依存パッケージ解決にて vendor
    ディレクトリが作成される場合は
    vendorは除く設定が必要。
    • `go fmt`の結果をstderrへ

    View Slide

  12. © - BASE, Inc.
    . Lintチェック
    • `golangci-lint run`の結果をstderrへ
    • golangci-lint を利⽤
    • GolangCI-Lint is a
    linters aggregator
    • See also: https://github.com/
    golangci/golangci-lint

    View Slide

  13. © - BASE, Inc.
    . Lintチェック - golangci-lintのconfig
    • 設定 .golangci.yml
    • 複数のチェックツールを
    まとめて実⾏することが
    できる

    View Slide

  14. © - BASE, Inc.
    4. ビルド‧テスト
    • `go build`にてビルド
    • ビルドができるかをチェッ
    クする
    • `go test`にてテスト
    go test -p -race -cover ./...

    View Slide

  15. © - BASE, Inc.
    5. 循環複雑度計測
    • 循環複雑度とは
    • ソフトウェ測定法の⼀つ
    • プログラムの複雑度を測

    • fzipp/gocyclo を利⽤した
    循環複雑度計測
    • See also: https://github.com/
    fzipp/gocyclo

    View Slide

  16. © - BASE, Inc.
    CircleCIを利⽤したプロジェクトの振り返り
    • CIが開発者にGo流を教えてくれる
    • コードを書く前にlint‧テストを設定した
    • チェックツールの追加に対する変更が発⽣
    • golangci-lintは途中から⼊れた
    • (※ go vet/go importsと⼊れ替え)
    • 最初は思いつく限り多めに⼊れて、外していくのが
    いいと思う

    View Slide

  17. © - BASE, Inc.
    余談:デプロイパイプランについて知りたい⽅は
    https://devblog.thebase.in/entry/ / / /

    View Slide

  18. © - BASE, Inc.
    余談:デプロイパイプランについて知りたい⽅は
    https://devblog.thebase.in/entry/ / / /
    「CircleCIとecspressoによるECSへのデプロイメントパイプライン」
    https://devblog.thebase.in/entry/ / / /

    View Slide

  19. Thanks

    View Slide