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

CircleCI 周辺ツール・豆知識5選

CircleCI 周辺ツール・豆知識5選

1. CircleCI周辺ツールたち
2. CIをskipする方法
3. docker imageをworkspaceで共有する方法
4. 環境変数(BASH_ENV)の簡単な登録方法
5. CircleCI の SSH デバッグのアクセスコントロール

Jun Kitamura

October 01, 2019
Tweet

Other Decks in Programming

Transcript

  1. CircleCI
    周辺ツール・豆知識5選
    Oct 1, 2019
    【東京】CircleCI ユーザーコミュニティミートアップ#7
    Jun Kitamura(@jkkitakita)

    View Slide

  2. 自己紹介
    - 北村 順(@jkkitakita)
    - ビットキー
    - bitlock(スマートロック)を開発中。
    - bitkey platform team 兼 SRE
    - CircleCI歴: 1~2年

    View Slide

  3. Agenda
    - はじめに
    - 周辺ツール・豆知識5選
    - さいごに

    View Slide

  4. はじめに

    View Slide

  5. 登壇するにあたって

    View Slide

  6. なんだかんだCircleCIは設定がすごく簡単だし
    登壇するにあたって

    View Slide

  7. なんだかんだCircleCIは設定がすごく簡単だし
    最近は日本語サポートもすごく充実していて
    登壇するにあたって

    View Slide

  8. なんだかんだCircleCIは設定がすごく簡単だし
    最近は日本語サポートもすごく充実していて
    日本のユーザーさんも多いので
    ちょっとググればだいたい出てくるので
    正直あまり話すことない。。。笑
    登壇するにあたって

    View Slide

  9. 登壇するにあたって
    とはいえ、ちょっと頑張らないと
    検索しづらい情報とか、ちょっとした小ネタとか

    View Slide

  10. 登壇するにあたって
    とはいえ、ちょっと頑張らないと
    検索しづらい情報とか、ちょっとした小ネタとか
    - サークルシーアイチョットデキル
    - CircleCIでマンネリ化している方

    View Slide

  11. 登壇するにあたって
    とはいえ、ちょっと頑張らないと
    検索しづらい情報とか、ちょっとした小ネタとか
    - サークルシーアイチョットデキル
    - CircleCIでマンネリ化している方
    とかには、周辺ツールとか豆知識的なニーズ
    ってあるんじゃないのかなー。

    View Slide

  12. 周辺ツール・豆知識5選

    View Slide

  13. 周辺ツール・豆知識5選
    1. CircleCI周辺ツールたち
    2. CIをskipする方法
    3. docker imageをworkspaceで共有する方法
    4. 環境変数(BASH_ENV)の簡単な登録方法
    5. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  14. 周辺ツール・豆知識5選
    1. CircleCI周辺ツールたち
    2. CIをskipする方法
    3. docker imageをworkspaceで共有する方法
    4. 環境変数(BASH_ENV)の簡単な登録方法
    5. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  15. CircleCI周辺ツールたち
    1. PRチェックツール
    ○ Danger
    2. コードレビュー
    ○ Reviewdog
    3. カバレッジ計測
    ○ Codecov

    View Slide

  16. Pull Requestの運用ルールを自動化できるツール。
    1. Pull Requestの説明にTODOが残っている場合、merge不可 ‍♂
    2. WIPの場合、merge不可 ‍♂
    3. base branchが間違っている場合、merge不可 ‍♂
    4. 1000行以上の修正がある場合、merge不可 ‍♂

    View Slide

  17. View Slide

  18. View Slide

  19. 静的解析ツール(Linter)の結果をPull Requestにコメントしてくれるツール
    1. 対象となった行に対して、Pull Requestのコメントをしてくれる。
    2. 対象Pull Requestの差分のみがコメント対象コードとなる
    a. 修正していない既存のコードは対象外。
    3. 色々な言語で利用できる e.g. Go, Ruby, Perl, PHP, Python etc...

    View Slide

  20. View Slide

  21. コードのテストカバレッジ計測ツール。
    1. Pull Request毎に、カバレッジの上昇、下降を算出してくれる
    2. 算出結果をPull Requestにコメントしてくれる
    3. 上昇率/下降率 or カバレッジの絶対値を閾値として設定して
    merge不可にしてくれる
    4. 色々な言語で利用できる
    a. Go, Java, Ruby, PHP, Python etc…

    View Slide

  22. View Slide

  23. 周辺ツール・豆知識5選
    1. CircleCI周辺ツールたち
    2. CIをskipする方法
    3. docker imageをworkspaceで共有する方法
    4. 環境変数(BASH_ENV)の簡単な登録方法
    5. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  24. gitのcommit commentに「 [ci skip] 」もしくは「 [skip ci] 」を入れる。
    CIをskipする方法
    1. 一旦、commit -> pushするが、そのあと直すとき(WIPのとき)
    2. 他に、優先してCircleCI実行したいものがあるとき
    cf. https://circleci.com/docs/ja/2.0/skip-build/#ビルドのスキップ
    利用シーン

    View Slide

  25. CircleCIの場合、SKIPとは別に、CircleCIの不要なJOBをNOT RUNにするために
    - Auto-cancel redundant builds (冗長ビルドを自動キャンセルする )
    - Only build pull requests (プルリクエストのみビルド )
    などもあるので、どういう場合に skipしたいか要検討。
    CIをskipする方法

    View Slide

  26. 周辺ツール・豆知識5選
    1. CircleCI周辺ツールたち
    2. CIをskipする方法
    3. docker imageをworkspaceで共有する方法
    4. 環境変数(BASH_ENV)の簡単な登録方法
    5. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  27. あるJobでbuildしたdocker imageを他のjobでも使いまわしたい!
    って時に、workspaceにdocker imageを保存する方法。
    docker imageをworkspaceで共有する方法
    1. docker buildとdocker pushを分ける
    2. docker imageの脆弱性スキャンを並列実行 etc…
    利用シーン

    View Slide

  28. docker imageをworkflowで共有する方法

    View Slide

  29. docker imageをworkflowで共有する方法

    View Slide

  30. 周辺ツール・豆知識5選
    1. CircleCI周辺ツールたち
    2. CIをskipする方法
    3. docker imageをworkspaceで共有する方法
    4. 環境変数(BASH_ENV)の簡単な登録方法
    5. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  31. 環境変数(BASH_ENV)の簡単な登録方法
    公式ページにある一般的な環境変数の読み込み方は
    cf. https://circleci.com/docs/ja/2.0/env-vars/#bash_env-で環境変数を定義する

    View Slide

  32. 環境変数(BASH_ENV)の簡単な登録方法
    environmentとして、BASH_ENVとして
    個別shellを指定すると簡単に環境変数が登録できる。

    View Slide

  33. 環境変数(BASH_ENV)の簡単な登録方法
    environmentとして、BASH_ENVとして
    個別shellを指定すると簡単に環境変数が登録できる。

    View Slide

  34. 環境変数(BASH_ENV)の簡単な登録方法
    environmentとして、BASH_ENVとして
    個別shellを指定すると簡単に環境変数が登録できる。
    「version」という環境変数が利用できる

    View Slide

  35. 周辺ツール・豆知識5選
    1. CircleCI周辺ツールたち
    2. CIをskipする方法
    3. docker imageをworkspaceで共有する方法
    4. 環境変数(BASH_ENV)の簡単な登録方法
    5. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  36. CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  37. CircleCI の SSH デバッグのアクセスコントロール
    CircleCI では SSH デバッグのアクセスができるのだが
    sshした環境には秘密な情報も入っている場合があり
    誰でも彼でも入れるとちょい困る!?

    View Slide

  38. CircleCI の SSH デバッグのアクセスコントロール
    CircleCI では SSH デバッグのアクセスができるのだが
    sshした環境には秘密な情報も入っている場合があり
    誰でも彼でも入れるとちょい困る!?
    なんと、SSHで入れなくすることができる!

    View Slide

  39. CircleCI の SSH デバッグのアクセスコントロール
    CircleCI では SSH デバッグのアクセスができるのだが
    sshした環境には秘密な情報も入っている場合があり
    誰でも彼でも入れるとちょい困る!?
    なんと、SSHで入れなくすることができる!
    (らしい!)

    View Slide

  40. CircleCI の SSH デバッグのアクセスコントロール
    CircleCIのサポートに問い合わせた内容によると...

    View Slide

  41. CircleCIのサポートに問い合わせた内容によると...
    アクセス制御の単位は
    1. Organization全て
    2. Repository単位
    ※1 User単位は不可!
    ※2 セキュリティ対策の代替案としては、contextsのグループ制御を利用する。
    CircleCI の SSH デバッグのアクセスコントロール

    View Slide

  42. さいごに

    View Slide

  43. 自分のプロジェクトだと、どんな設定がいいんだろう。。
    CircleCI公式ドキュメントの「パブリックリポジトリの例」をみて
    自分のプロジェクトにあった著名なプロジェクトの設定を真似してみると
    参考になるかもしれない。
    https://circleci.com/docs/ja/2.0/example-configs/#section=configuration

    View Slide

  44. We’re Hiring!!
    採用情報、社員インタビュー

    Wantedlyで配信中


    View Slide