Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

テスト漏れを無くしたい!ワークフロー単位でトリガーを自由に設定したい要望

373 views

Published on

2020年8月5日(水) CircleCI コミュニティミートアップ
https://circleci.connpass.com/event/178558/

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

テスト漏れを無くしたい!ワークフロー単位でトリガーを自由に設定したい要望

  1. 1. テスト漏れを無くしたい! ワークフロー単位でトリガーを ⾃由に設定したい要望 サイボウズ株式会社 ⽣産性向上チーム 平⽊場 ⾵太(@shitimi_613) 2020年8⽉5⽇(⽔) CircleCI コミュニティミートアップ
  2. 2. 簡単なプロフィール 2020/08/05 2 平⽊場 ⾵太(Futa HIRAKOBA) • 4⽉にサイボウズ新卒⼊社 • 6⽉末から⽣産性向上チームにJoin! これまでの主な業務 • CI/CDパイプラインの整備 • dockerfile職⼈ • AWSリソースのゴミ掃除⾃動化 • ⿅児島に帰省したいけどコロナで帰れない... • 対⾺にはよく⾏く(ゲーム) • 最近はk8sの勉強やってる Shitimi_613 korosuke613
  3. 3. 2020/08/05 3 とつぶやいたら 3~4⽇前...
  4. 4. 2020/08/05 4 まさかの公式さんから連絡が来て いろいろあってLTすることになりました 3~4⽇前...
  5. 5. TL;DR ワークフロー単位で トリガーをPRに設定できるよう になってほしい! 2020/08/05 5
  6. 6. 背景 2020/08/05 6
  7. 7. Garoonという製品がある 2020/08/05 7https://garoon.cybozu.co.jp/
  8. 8. phpcsコマンドでコーディング規約を チェックしてコメントするジョブ Garoon開発のざっくりとした流れ 2020/08/05 8 コーディング 静的解析 テスト デリバリー lint-php lint-js phan ... phpcs phpcs: https://github.com/squizlabs/PHP_CodeSniffer QA リリースなど コーディング規約を継続的に確認している
  9. 9. phpcsジョブが やってくれること 2020/08/05 9 1.GitHub APIを叩いて1、 マージ先ブランチ(base)と マージ元ブランチ(compare)との差分を取得 2.差分3に対してphpcsコマンドを実⾏ 3.GitHubのPull Requestにコメント 1. h$ps://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests 2. 差分に対して⾏う理由はすでに規約違反のコードが⼤量に存在するためです...
  10. 10. こんな感じでコメントしてくれる 2020/08/05 10
  11. 11. もしかしてこれpushじゃ うまくいかないんじゃ... 2020/08/05 11 と思われた⽅もいると思います。
  12. 12. phpcsジョブを包含する ワークフローを動かすには プルリクエストが必要* 2020/08/05 12* 2つのcommitの⽐較もできるっちゃできる
  13. 13. CircleCIでプルリクエストを ワークフローのトリガーとする 2020/08/05 131. https://circleci.com/docs/2.0/oss/#build-pull-requests-from-forked-repositories 2. ただし、デフォルトブランチだけは従来通りpushでワークフローが動く プロジェクト単位で、プルリクエスト時にワー クフローを動かす設定ができる1。 設定⽅法 Project Settings > Advanced > Only build pull requests ただし、設定を有効にすると、pushでワークフ ローが動かなくなる2。
  14. 14. Garoonはコミットでも ワークフローを⾛らせたい 2020/08/05 14
  15. 15. CIRCLE_PULL_REQUEST環境変数で PRかどうかを判断してる 2020/08/05 15https://circleci.com/docs/ja/2.0/env-vars/ CIRCLE_PULL_REQUEST: 関連付けられたプルリクエストのURLが格納される環境変数 • プルリクエストでないなら circleci step halt でジョブを途中で終了させる • プルリクエストなら ジョブを続⾏する
  16. 16. コーディング規約を継続的に確認 2020/08/05 16 PR作成 & push comment PR phpcsジョブ: PASSED or FAILED コーディング規約を守れていない変更のマージを未然に防げる プルリクエストがあるので phpcsコマンドを実⾏できる
  17. 17. 常にきれいなコード! みんなハッピー! 2020/08/05 17
  18. 18. 常にきれいなコード! みんなハッピー! 2020/08/05 18 とはならなかった...
  19. 19. 問題 2020/08/05 19
  20. 20. もしプルリクエスト作成後に pushしなかったら...? 2020/08/05 20
  21. 21. PR作成後にpushした場合 2020/08/05 21 規約違反のコードをpush comment PR プルリクエストがあるので phpcsコマンドを実⾏できる PR作成 phpcsジョブ: FAILED
  22. 22. push後にPRを作成した場合 2020/08/05 22 規約違反のコードをpush プルリクエストがないので phpcsコマンドを実⾏できない PR作成 (ワークフローは実⾏されない) phpcsジョブ: PASSED ヨシ! https://kumamine.blogspot.com/2019/12/blog-post_27.html
  23. 23. push後にPRを作成した場合 2020/08/05 23 規約違反のコードをpush プルリクエストがないので phpcsコマンドを実⾏できない PR作成 (ワークフローは実⾏されない) phpcsジョブ: PASSED ヨシ! https://kumamine.blogspot.com/2019/12/blog-post_27.html 良くない
  24. 24. もしこれがガチのテストだったら.. 2020/08/05 24 バグを⾒過ごしてしまうかも... テストしていないのに あたかもテストが通過したと勘違いして マージしてしまう
  25. 25. 2020/08/05 25 運⽤でカバー(PRを先に作る or Re-Runする) ➡ヒューマンエラーは避けられないし、⾯倒 マージ先ブランチを特定して⽐較する ➡特定が⼤変1 GitHub Actionsを使ってPR作成時にワークフローを動かす ➡本末転倒感がある2 etc... もちろん回避策はある 1. garoonはmasterブランチと呼べるものが複数個あるので... 2. しかも、GitHub Enterprise Serverではまだ使えない ベストな⽅法は無い...
  26. 26. ワークフロー単位でトリガー をPRに設定できればな〜〜 はるかに楽なのにな〜〜〜 2020/08/05 26
  27. 27. 2020/08/05 27 • 今回はだいぶ狭いユースケースでしたが、CircleCIのコ ミュニティでも多くの需要があるようです*。 • コード上(config.yml)で設定できるようになるのが個⼈ 的な理想です。 ワークフロー単位で トリガーにPRを設定できるよう になってほしいです!! * https://ideas.circleci.com/ideas/CCI-I-316 なので、
  28. 28. というわけで、 CircleCIのみなさん、 ご検討のほど よろしくお願いします!! 🙇🙇🙇🙇🙇🙇🙇🙇 2020/08/05 28

×