O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

407 visualizações

Publicada em

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

Publicada em: Engenharia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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

  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

×