Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitHub_Actionsをセルフホストランナーで導入する
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
あるど
December 16, 2020
4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub_Actionsをセルフホストランナーで導入する
社内LT会で発表したものです、一部変えています。
あるど
December 16, 2020
More Decks by あるど
See All by あるど
Unity WebGL向けにjsでネイティブプラグイン書いた話
mizotake
0
530
OSSをゆるっとやるだけでも 楽しいなって話
mizotake
2
4.4k
手軽なトラッキング技術で遊んでみた
mizotake
0
3.9k
Kotlin/Native With Unity
mizotake
1
310
Unity開発でCI/CDを使おうと思った時
mizotake
0
1.2k
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
550
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
700
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
The Invisible Side of Design
smashingmag
301
52k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Test your architecture with Archunit
thirion
2
2.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
530
GraphQLとの向き合い方2022年版
quramy
50
15k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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を 使い分けるのはアリ