Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
テスト漏れを無くしたい!ワークフロー単位でトリガーを自由に設定したい要望
Search
Futa HIRAKOBA
August 05, 2020
Technology
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト漏れを無くしたい! ワークフロー単位でトリガーを自由に設定したい要望
2020年8月5日(水) CircleCI コミュニティミートアップのLTで話した内容です
https://circleci.connpass.com/event/178558/
Futa HIRAKOBA
August 05, 2020
More Decks by Futa HIRAKOBA
See All by Futa HIRAKOBA
terraform plan 結果の検証を自動化するぞ! with Conftest / Testing terraform plan with Conftest
korosuke613
0
16k
生産性向上チームとは?
korosuke613
1
1.6k
サイボウズの生産性を高める生産性向上チームと開発文化 / Development culture and EPT in Cybozu
korosuke613
5
1.2k
What will your future college life look like? 〜今後の大学生活をどのようにしますか?〜
korosuke613
0
150
ETロボコン2019 CS大会モデル[DA] - K-Lab
korosuke613
0
1.1k
ETロボコン2019 地区大会モデル[DA] - K-Lab
korosuke613
0
990
人月の神話紹介
korosuke613
0
340
片山徹郎研究室紹介スライド2019
korosuke613
0
800
逆求人自己紹介プレゼン(平木場)
korosuke613
0
350
Other Decks in Technology
See All in Technology
日本AIベンチャーレポート2026
kentarofujii
0
260
ドメインエキスパートは いかにして AI を使って プロダクト開発をするか
tatsuyashiraishi
1
230
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
450
How we choose session proposals
kawaguti
PRO
1
190
AIエージェントに 権限と鍵をどこまで渡すか
nrinetcom
PRO
2
150
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
290
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
100
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
600
生き様としてのSRE
hokkai7go
0
130
Vibe-to-Spec開発_実践ガイド
happysamurai294
0
120
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
550
キヨさん67歳 AIコーディングエージェント物語
happysamurai294
0
120
Featured
See All Featured
A Soul's Torment
seathinner
8
3.8k
sira's awesome portfolio website redesign presentation
elsirapls
0
470
How STYLIGHT went responsive
nonsquared
100
6.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
590
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Building Adaptive Systems
keathley
44
3.3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
760
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Speed Design
sergeychernyshev
33
2.2k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Transcript
テスト漏れを無くしたい! ワークフロー単位でトリガーを ⾃由に設定したい要望 サイボウズ株式会社 ⽣産性向上チーム 平⽊場 ⾵太(@shitimi_613) 2020年8⽉5⽇(⽔) CircleCI コミュニティミートアップ
簡単なプロフィール 2020/08/05 2 平⽊場 ⾵太(Futa HIRAKOBA) • 4⽉にサイボウズ新卒⼊社 • 6⽉末から⽣産性向上チームにJoin!
これまでの主な業務 • CI/CDパイプラインの整備 • dockerfile職⼈ • AWSリソースのゴミ掃除⾃動化 • ⿅児島に帰省したいけどコロナで帰れない... • 対⾺にはよく⾏く(ゲーム) • 最近はk8sの勉強やってる Shitimi_613 korosuke613
2020/08/05 3 とつぶやいたら 3~4⽇前...
2020/08/05 4 まさかの公式さんから連絡が来て いろいろあってLTすることになりました 3~4⽇前...
TL;DR ワークフロー単位で トリガーをPRに設定できるよう になってほしい! 2020/08/05 5
背景 2020/08/05 6
Garoonという製品がある 2020/08/05 7 https://garoon.cybozu.co.jp/
phpcsコマンドでコーディング規約を チェックしてコメントするジョブ Garoon開発のざっくりとした流れ 2020/08/05 8 コーディング 静的解析 テスト デリバリー lint-php
lint-js phan ... phpcs phpcs: https://github.com/squizlabs/PHP_CodeSniffer QA リリースなど コーディング規約を継続的に確認している
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. 差分に対して⾏う理由はすでに規約違反のコードが⼤量に存在するためです...
こんな感じでコメントしてくれる 2020/08/05 10
もしかしてこれpushじゃ うまくいかないんじゃ... 2020/08/05 11 と思われた⽅もいると思います。
phpcsジョブを包含する ワークフローを動かすには プルリクエストが必要* 2020/08/05 12 * 2つのcommitの⽐較もできるっちゃできる
CircleCIでプルリクエストを ワークフローのトリガーとする 2020/08/05 13 1. 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。
Garoonはコミットでも ワークフローを⾛らせたい 2020/08/05 14
CIRCLE_PULL_REQUEST環境変数で PRかどうかを判断してる 2020/08/05 15 https://circleci.com/docs/ja/2.0/env-vars/ CIRCLE_PULL_REQUEST: 関連付けられたプルリクエストのURLが格納される環境変数 • プルリクエストでないなら circleci
step halt でジョブを途中で終了させる • プルリクエストなら ジョブを続⾏する
コーディング規約を継続的に確認 2020/08/05 16 PR作成 & push comment PR phpcsジョブ: PASSED
or FAILED コーディング規約を守れていない変更のマージを未然に防げる プルリクエストがあるので phpcsコマンドを実⾏できる
常にきれいなコード! みんなハッピー! 2020/08/05 17
常にきれいなコード! みんなハッピー! 2020/08/05 18 とはならなかった...
問題 2020/08/05 19
もしプルリクエスト作成後に pushしなかったら...? 2020/08/05 20
PR作成後にpushした場合 2020/08/05 21 規約違反のコードをpush comment PR プルリクエストがあるので phpcsコマンドを実⾏できる PR作成 phpcsジョブ:
FAILED
push後にPRを作成した場合 2020/08/05 22 規約違反のコードをpush プルリクエストがないので phpcsコマンドを実⾏できない PR作成 (ワークフローは実⾏されない) phpcsジョブ: PASSED
ヨシ! https://kumamine.blogspot.com/2019/12/blog-post_27.html
push後にPRを作成した場合 2020/08/05 23 規約違反のコードをpush プルリクエストがないので phpcsコマンドを実⾏できない PR作成 (ワークフローは実⾏されない) phpcsジョブ: PASSED
ヨシ! https://kumamine.blogspot.com/2019/12/blog-post_27.html 良くない
もしこれがガチのテストだったら.. 2020/08/05 24 バグを⾒過ごしてしまうかも... テストしていないのに あたかもテストが通過したと勘違いして マージしてしまう
2020/08/05 25 運⽤でカバー(PRを先に作る or Re-Runする) ➡ヒューマンエラーは避けられないし、⾯倒 マージ先ブランチを特定して⽐較する ➡特定が⼤変1 GitHub Actionsを使ってPR作成時にワークフローを動かす
➡本末転倒感がある2 etc... もちろん回避策はある 1. garoonはmasterブランチと呼べるものが複数個あるので... 2. しかも、GitHub Enterprise Serverではまだ使えない ベストな⽅法は無い...
ワークフロー単位でトリガー をPRに設定できればな〜〜 はるかに楽なのにな〜〜〜 2020/08/05 26
2020/08/05 27 • 今回はだいぶ狭いユースケースでしたが、CircleCIのコ ミュニティでも多くの需要があるようです*。 • コード上(config.yml)で設定できるようになるのが個⼈ 的な理想です。 ワークフロー単位で トリガーにPRを設定できるよう
になってほしいです!! * https://ideas.circleci.com/ideas/CCI-I-316 なので、
というわけで、 CircleCIのみなさん、 ご検討のほど よろしくお願いします!! 2020/08/05 28