Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitHub_Actionsをセルフホストランナーで導入する
Search
あるど
December 16, 2020
0
3.5k
GitHub_Actionsをセルフホストランナーで導入する
社内LT会で発表したものです、一部変えています。
あるど
December 16, 2020
Tweet
Share
More Decks by あるど
See All by あるど
Unity WebGL向けにjsでネイティブプラグイン書いた話
mizotake
0
490
OSSをゆるっとやるだけでも 楽しいなって話
mizotake
2
3.8k
手軽なトラッキング技術で遊んでみた
mizotake
0
3.4k
Kotlin/Native With Unity
mizotake
1
270
Unity開発でCI/CDを使おうと思った時
mizotake
0
1.2k
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.3k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
63
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Building AI with AI
inesmontani
PRO
1
560
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
170
Writing Fast Ruby
sferik
630
62k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
670
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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を 使い分けるのはアリ