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
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Agile that works and the tools we love
rasmusluckow
328
21k
Producing Creativity
orderedlist
PRO
341
39k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Gamification - CAS2011
davidbonilla
80
5.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
How to train your dragon (web standard)
notwaldorf
88
5.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing Experiences People Love
moore
138
23k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
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を 使い分けるのはアリ