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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
sada
July 09, 2021
Technology
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[CA.unity #2] 動かないコードを マージさせないための コンパイルエラー検知くんを GithubActionで作った話
sada
July 09, 2021
More Decks by sada
See All by sada
コンパイルエラー検知くんその2
sada913
0
730
Other Decks in Technology
See All in Technology
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.3k
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
320
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
220
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
5
4.5k
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
130
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
4k
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
200
地球に⽣きるAI —GeoAIと「中間領域」— / AI Living on Earth — GeoAI and the “Intermediate Layer” —
ykiyota
0
280
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
790
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
610
FDE という解 ― 暗黙知と明示知をつなぐ、伴走型エンジニアリング ―
otanet
0
130
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
790
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Odyssey Design
rkendrick25
PRO
2
690
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Building AI with AI
inesmontani
PRO
1
1.1k
Building the Perfect Custom Keyboard
takai
2
790
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
420
Paper Plane (Part 1)
katiecoart
PRO
0
8.8k
Faster Mobile Websites
deanohume
310
31k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
From π to Pie charts
rasagy
0
210
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
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