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
GitHub_Actionsをセルフホストランナーで導入する
Search
あるど
December 16, 2020
0
2.9k
GitHub_Actionsをセルフホストランナーで導入する
社内LT会で発表したものです、一部変えています。
あるど
December 16, 2020
Tweet
Share
More Decks by あるど
See All by あるど
Unity WebGL向けにjsでネイティブプラグイン書いた話
mizotake
0
450
OSSをゆるっとやるだけでも 楽しいなって話
mizotake
2
3.1k
手軽なトラッキング技術で遊んでみた
mizotake
0
2.7k
Kotlin/Native With Unity
mizotake
1
230
Unity開発でCI/CDを使おうと思った時
mizotake
0
1.1k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Fireside Chat
paigeccino
34
3.1k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
We Have a Design System, Now What?
morganepeng
51
7.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How STYLIGHT went responsive
nonsquared
95
5.2k
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Practical Orchestrator
shlominoach
186
10k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
It's Worth the Effort
3n
183
28k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
99
Transcript
GitHub Actionsを セルフホストランナーで導入した話
GitHub Actionsを 導入してみました
GitHub Actionsって何?
GitHub Actionsとは プッシュ、Issue、リリースなどのGitHubプラットフォームのイベントをトリガーとしてワークフローを起動しましょう。コミュ ニティが開発・保守し、ユーザが熟知・愛用しているサービスについて、対応するアクションを組み合わせて設定できま す。 コンテナアプリの構築、Webサービスの展開、レジストリへのパッケージの公開、またはオープンソースプロジェクトへの 新しいユーザーのウェルカムメッセージを自動化するなど、さまざまな用途で Actionsを利用できます。 GitHub PackageとActionsを連携させパッケージ管理を簡素化できます。バージョンのアップデート、グローバル
CDNによる高 速配布、既存のGITHUB_TOKENを使用した依存関係の解決なども行えます。 https://github.co.jp/features/actions
なんや色々連携しやすいCI
GitHub Actionsとは 連携できる例 • GitHub(issue/Pull request/Project..etc) • Slack • Docker
...AWS,Azure,InteliJ...etc 参考: https://github.com/marketplace?type=actions
そもそも何故導入しようと思っ たのか
きっかけ ・Jenkinsは立ち上げ済(既にビルドジョブとかは定義している) ・Docker扱ったりGitHubのapi叩けるようにするのめんどくさい ・IPアドレス制限などは案件都合上必要(セルフホストランナーがある)
やりたいこと ・GitHub Actionsをセルフホストランナーで導入する ・毎日PRを作る必要性があったので自動化 ・fastlaneを導入していたのでRubyのlintチェック
今回できたこと ・GitHub Actionsをセルフホストランナーで導入する →最終的にはDinDで解決した ・毎日PRを作る必要性があったので自動化 →cronのトリガー機能を使って自動化できた ・fastlaneを導入していたのでRubyのlintチェック →rubocopを導入してPRのコミット単位でチェック可能になった
今回できたこと ・GitHub Actionsをセルフホストランナーで導入する →最終的にはDinDで解決した ・毎日PRを作る必要性があったので自動化 →cronのトリガー機能を使って自動化できた ・fastlaneを導入していたのでRubyのlintチェック →rubocopを導入してPRのコミット単位でチェック可能になった
セルフホストランナー 実際に処理を行うマシンでJenkinsのAgentみたいなもの 対応OS - Linux(一部) - macOS - Windows セットアップ用のリポジトリがあるので手順に従う
https://github.com/actions/runner
セルフホストランナー macOSでセットアップしたがサードパーティーのActionが動かない… → 大体Linuxのホストランナーにしか対応してない → DockerでUbuntuベースのホストランナーDockerfileを定義して動かす → 動かない
どうして…
セルフホストランナー よく確認するとLinux上でDockerが動かせることが条件のActionもある → でも、Linux自体はDockerで動いてて…
???
Dockerで動いているOSの上で Dockerが動けばいい
Docker in Docker
https://www.tiuweehan.com/blog/2020-09-10-docker-in-jenkins-in-docker/
ちゃんとActionが動いた
ヨシ!
今回できたこと ・GitHub Actionsをセルフホストランナーで導入する →最終的にはDinDで解決した ・毎日PRを作る必要性があったので自動化 →cronのトリガー機能を使って自動化できた ・fastlaneを導入していたのでRubyのlintチェック →rubocopを導入してPRのコミット単位でチェック可能になった
自動でPRを作る https://docs.github.com/ja/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actio ns#onschedule
自動でPRを作る(画像はissueにコメントするやつ) https://github.com/actions/github-script
今回できたこと ・GitHub Actionsをセルフホストランナーで導入する →最終的にはDinDで解決した ・毎日PRを作る必要性があったので自動化 →cronのトリガー機能を使って自動化できた ・fastlaneを導入していたのでRubyのlintチェック →rubocopを導入してPRのコミット単位でチェック可能になった
https://docs.fastlane.tools/
Ruby製のCI支援CLI
fastlaneとは ・iOS証明書の入れ替え ・Xcode/Gradleのビルド ・AppStore/PlayStoreへのipa/apkアップロード ・Git操作 ・UITestを使ったスクリーンショット機能 などがデフォルトで搭載、サードパーティーの追加処理を入れたりも可能
fastlaneとは 処理をRubyで定義 → Ruby自体そこまで精通しなくても雰囲気で書ける → Rubyの書き方が揃わなくなる
書き方が整わないなら 揃えればいいじゃない
lintツールの検討
https://github.com/rubocop-hq/rubocop
GitHub Actionsで動かすなら
https://github.com/andrewmcodes/rubocop-linter-action
https://hai3.net/blog/github-actions-rubocop-linter-action/
まとめ
用途に合わせてCIを 使い分けるのはアリ