Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
[CA.unity #2] 動かないコードを マージさせないための コンパイルエラー検知くんを...
Search
sada
July 09, 2021
Technology
1
1.7k
[CA.unity #2] 動かないコードを マージさせないための コンパイルエラー検知くんを GithubActionで作った話
sada
July 09, 2021
Tweet
Share
More Decks by sada
See All by sada
コンパイルエラー検知くんその2
sada913
0
680
Other Decks in Technology
See All in Technology
us-east-1 に障害が起きた時に、 ap-northeast-1 にどんな影響があるか 説明できるようになろう!
miu_crescent
PRO
13
4.2k
マルチアカウント環境でSecurity Hubの運用!導入の苦労とポイント / JAWS DAYS 2026
genda
0
560
20260311 技術SWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
310
vLLM Community Meetup Tokyo #3 オープニングトーク
jpishikawa
0
330
非情報系研究者へ送る Transformer入門
rishiyama
11
7.3k
堅牢.py#2 LT資料
t3tra
0
140
JAWSDAYS2026_A-6_現場SEが語る 回せるセキュリティ運用~設計で可視化、AIで加速する「楽に回る」運用設計のコツ~
shoki_hata
0
3k
Scrumは歪む — 組織設計の原理原則
dashi
0
140
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
4
830
JAWS DAYS 2026 楽しく学ぼう!ストレージ 入門
yoshiki0705
2
170
情シスのための生成AI実践ガイド2026 / Generative AI Practical Guide for Business Technology 2026
glidenote
0
210
OpenClawで回す組織運営
jacopen
3
700
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
280
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Claude Code のすすめ
schroneko
67
220k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
160
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Documentation Writing (for coders)
carmenintech
77
5.3k
Six Lessons from altMBA
skipperchong
29
4.2k
Color Theory Basics | Prateek | Gurzu
gurzu
0
250
Fireside Chat
paigeccino
42
3.8k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
Transcript
動かないコードを マージさせないための コンパイルエラー検知くんを GithubActionで作った話 Graffity株式会社 sada 1
自己紹介 sada @SAyanada9 Graffity株式会社所属 新卒1年目のクライアントエンジニア兼ARエンジニア兼CI/CDエンジニア 2
自己紹介 実はGraffityにはインターンなどを含むと3年弱在籍 Graffityではスマホ向けARシューティングバトル 「Leap Trigger」を開発、運営中! 3 ©2021 Graffity Inc.
開発経緯 • 弊社ではSlackでJenkinsおじさんにビルドコマンドを投げるような仕組みを使って いる 4
開発経緯 • Slackビルドはエンジニア以外のメンバーも利用可能 • セキュリティの関係上Jenkinsに自由にログインできないようにしている • Slackにはビルドの成功可否のみ通知させる エンジニアがいない場合ビルドが失敗すると色々大変 5
開発経緯 そこでビルドが失敗する原因で一番多かった コンパイルエラーなコードを 本流のブランチにマージできないような仕組みを作成 6
仕組み GitHubのプルリクエストにコミットがPushされるたびに コンパイルエラーかどうかをチェックする 7
実装 使用したもの • Unity • GitHub Actions ◦ SelfHostRunner 8
実装 Unity編 • バッチモードでUnityプロジェクトを開くとコンパイルエラーなどを起こしていたらエ ラーを吐いて exit 1で終了するという仕様を使っている ◦ https://docs.unity3d.com/ja/2020.3/Manual/CommandLineArguments.html 参考
• UnityEditorで一応開いているのでついでに.csprojなどの依存性も解決してくれる 9
実装 GitHubActions編 GitHubActionsとは • 自動化ツール • GitHubのさまざまなActionをトリガーに処理を作成可能 ◦ Pushされたら ◦
Issueをたてられたら • (ほぼ)同様なツールにGitLab CIなど 10
実装 GithubActions編 SelfHostRunnerとは これはGithubActionsの実行される仮想マシンを 自前のPCで実行することができる公式ツール 11
実装 GithubActions編 なぜSelfHostRunnerを使っているのかというと • GithubActionsのDockerでもUnityが使えるが、ライセンス処理がめんどう • プロジェクトが重たいため毎回Importが走ると時間がかかる • なにより、Privateだと流石にお高い •
ちょうどJenkinsに使っているMacのPCがあった など 12
実装 GithubActions編 SelfHostRunnerの注意点 • 任意コードが実行できてしまう • 絶対にパブリックなリポジトリで実行可能にしない ◦ https://docs.github.com/ja/actions/hosting-your-own-runners/about-self-hosted-runners 参考
• 実行速度はホストPC依存(MacProとかだと早い) 13
実装 GithubActions編 全体像 14
実装 GithubActions編 この部分はほぼおまじない 15
実装 GithubActions編 Unityを開いているだけ $UNITY_PATH はUnityの.appのPATH 上の方で指定してもよし、そのまま直書きしてもよし $GITHUB_WORKSPACE はGitHubActionsで提供されている環境変数の一つ そのリポジトリの直下のPATHを示している 16
実装 GithubActions編 この項は結果をGitHubのPull request上にコメントしている 17
実装 GithubActions編 secrets.GITHUB_TOKEN 便利なトークン、Botが返してくれる github.event.pull_request.comments_url イベントが発火されたプルリク エストのコメントURL このURLを使ってコメントするAPIをPOSTで投げてる 18
実装 GithubActions編 github.actor イベントが開始されたコミットをした人 github.sha コミットのハッシュ コミットのURLを特定するために使用 19
実装 GithubActions編 全部を実装するとこれがプルリクエストのコメントに表示される あとは、お好みで追加でSlackにもなげるようにしたりとかをする ここに全体のymlファイルを上げているのでご参考に https://github.com/sada913/CompileErrorCheckKun 20
効果 • 去年の10月あたりに導入した • 1回だいたい1分前後(Unityのインポート時間に結構左右される) ◦ 何も設定していない場合 Standaloneで開くため圧縮しない場合比較的はやい 21
効果 • ビルドが失敗することが減った ◦ アセットバンドル関連や using Editorなどがまだ検知できない ◦ 新バージョン構想中 •
コンフリクトの解決後のコンパイルエラーなコミットを Pushしてしまったときすぐに気づけるように • コミット忘れのファイルがあったときに気づけるように 22
効果 ちなみに実際のコンパイルエラー原因は • コミット忘れ • コンフリクト解決失敗でコンパイルエラー • そもそもコンパイルエラーのコード の順に多かった 23
最後に 元気に動いている様子 上記の実装に加えてSlackにも投げるようにしたあと コンパイルエラー検知くんが稼働している様子 24