Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

完全に理解 しましたね?

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

© - BASE, Inc. 1. 依存パッケージ解決 • Goの依存パッケージ関係 解決に Go Modules を利 ⽤ • See also: https://circleci.com/ blog/go-v . -modules-and- circleci/ • circleci/golang >= . . を利⽤ • Go . MODULE = “on”

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

© - BASE, Inc. 5. 循環複雑度計測 • 循環複雑度とは • ソフトウェ測定法の⼀つ • プログラムの複雑度を測 る • fzipp/gocyclo を利⽤した 循環複雑度計測 • See also: https://github.com/ fzipp/gocyclo

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Thanks