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
self-hosted runnerと actions/cache の噛み合わせが悪かった件 #githubactionsmeetup
Search
whywaita
PRO
September 25, 2023
Technology
3
1.3k
self-hosted runnerと actions/cache の噛み合わせが悪かった件 #githubactionsmeetup
Talked by
GitHub Actions Meetup Tokyo #2
whywaita
PRO
September 25, 2023
Tweet
Share
More Decks by whywaita
See All by whywaita
過去事例から見るモニタリングの大切さ #techfeed_live
whywaita
PRO
2
1.1k
バリエーションで差をつける。myshoesの新たな挑戦 #cicd_test_night
whywaita
PRO
0
5.1k
ディスクレスハイパーバイザ 〜運用しやすいクラウドのために〜
whywaita
PRO
0
92
Securing CI/CD Systems Through eBPF (recap)
whywaita
PRO
1
860
GitHub Actions runner基盤におけるオンプレミスマルチテナントアプリケーションの運用 #CADC2022
whywaita
PRO
0
380
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with your shoes. #cndjp
whywaita
PRO
0
36
イベント企画運営の経験と実際 / The history of organizing events by me
whywaita
PRO
0
10
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in CyberAgent Internet Seminer
whywaita
PRO
0
8
CyberAgent における OSS の CI/CD 基盤開発 myshoes #CICD2021
whywaita
PRO
0
39
Other Decks in Technology
See All in Technology
On Your Data を超えていく!
hirotomotaguchi
2
750
本当のAWS基礎
toru_kubota
1
620
Amplify 🩷 Bedrock 〜生成AI入門〜
minorun365
PRO
8
420
MapLibreとAmazon Location Service
dayjournal
1
180
Grafana x PagerDuty Better Together
jacopen
1
250
【SORACOM UG 東海】あらゆるモノがつながる社会へ、IoT と SORACOM
soracom
PRO
1
140
One engineer company with Ruby on Rails
rstankov
2
420
EMとして2023年度に頑張ったこと / What we did well in FY2023 as a EM
pauli
1
210
AWSに詳しくない人でも始められるコスト最適化ガイド
yuhta28
2
300
R3のコードから見る実践LINQ実装最適化・コンカレントプログラミング実例
neuecc
3
2.2k
How to Lead? Testimonial of a Lead Android Engineer
oleur
1
110
Next.js に疲れた私は Vue3 に癒やされた
akagire
0
130
Featured
See All Featured
How GitHub (no longer) Works
holman
305
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
38
2.5k
Building Your Own Lightsaber
phodgson
100
5.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
649
58k
Faster Mobile Websites
deanohume
300
30k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
Happy Clients
brianwarren
92
6.4k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
We Have a Design System, Now What?
morganepeng
44
6.8k
Gamification - CAS2011
davidbonilla
77
4.6k
Infographics Made Easy
chrislema
238
18k
Producing Creativity
orderedlist
PRO
338
39k
Transcript
self-hosted runnerと actions/cache の噛み合わせが悪かった件 株式会社サイバーエージェント CIU Development div Nakanishi
Kento @whywaita GitHub Actions Meetup Tokyo # 2 @ サイボウズ株式会社 2023/09/21
Nakanishi Kento / whywaita • 株式会社サイバーエージェント 2019新卒 • 業務: CAグループ向けプライベートクラウド開発
• GitHub Actions ベースCIサービス (Managed myshoes) PM • 社内向け IaaS 開発者 • 趣味: ポーカー / XREAL Air / ⾃宅インフラ ISUCON本買ってね! #isucon →
本⽇ • スライド: 48枚 • 発表時間: 10分 = 600秒 •
12.5秒/枚!!!!!! 3
周辺知識 4
action/cache • https://github.com/actions/cache • 依存ライブラリのファイルをキャッシュす ることでCI時間を短くするモジュール • 任意のファイルを保存できる • 1
0 GB / repo まで無料 5
self-hosted runner • ↔ GitHub-hosted runner • ⾃前のインフラでrunner起動するやつ • ⾃宅
社内サーバ プライベートクラウド... • ネットワーク CPU メモリなど嬉しい要素 6
[PR] whywaita/myshoes • Auto-scaling VirtualMachine runner 🏃 for GitHub Actions
• 様々なクラウドでrunnerを作成可能 • https://github.com/whywaita/myshoes 7
[PR] Cycloud 8 •Cy(berAgent)cloud •各種サービスの提供 •IaaS / KaaS / PaaS
/ ML Platform •Cycloud-hosted runner (myshoes)
9 https://www.cyberagent.co.jp/news/detail/id= 2 84 8 4
10 https://isucon.net/archives/ 55 5 3 3 0 13 .html
[PR] Cycloud-hosted runner • Cycloud VMをStadiumとしGitHub-hostedよりも安価に 提供 • LXDイメージはGitHub-hostedとほぼ同じイメージを利⽤ •
https://github.com/whywaita/actions-runner-images- lxd • runnerスペック 2Core 20 GB ~ 16 Core 1 60 GB 11
[PR] 規模感 • Stadium台数: 約80台 ( 1 6 c 160
gb) • 導⼊数: エンジニアの50% が利⽤! • アカウント数ベース • Linux版GAから: 1年8ヶ⽉ • 1⽇の実⾏job数: 約1万個 • 常時500〜700インスタンスぐらい 12
13 https://speakerdeck.com/whywaita/evolution-myshoes-cicd-test-night- 6
14 Internal actions/cache
GitHub owned by Microsoft • GitHub Actionsのバックエンドは (現状)ほぼAzure Pipelines
• 関連サービスもAzureの製品を⽤いて実装 されている(ことが多い) 15
GitHub owned by Microsoft trigger: - main pool: vmImage: 'ubuntu-latest'
steps: - task: Maven@4 inputs: mavenPomFile: 'pom.xml' mavenOptions: '-Xmx3072m' javaHomeOption: 'JDKVersion' jdkVersionOption: '1.11' jdkArchitectureOption: 'x64' 16 https://learn.microsoft.com/ja-jp/azure/devops/pipelines/customize-pipeline?view=azure-devops
ぽい 17
GitHub owned by Microsoft • (whywaita 調べ) • GitHub Actionsのバックエンドは
(現状)ほぼAzure Pipelines • 関連サービスもAzureの製品を⽤いて実装 されている(ことが多い) 18
GitHub owned by Microsoft • (whywaita 調べ) • GitHub Actionsのバックエンドは
(現状)ほぼAzure Pipelines • 関連サービスもAzureの製品を⽤いて実装 されている(ことが多い) 19
actions/cache internal • actions/cache は Azure Blob storage • それっぽい機能が実装されている
• CDNっぽく配信するとか • GETしたら Lifecycle 伸ばすとか 20
actions/cache internal 21 runner Azure blob storage
🙅 22
actions/cache internal 23 runner Azure blob storage
actions/cache internal 24 runner Azure blob storage GitHub Cache API
actions/cache internal • GitHub Cache API (仮称) • 各種情報を確認しているのでは?と推測 •
リポジトリ毎の保存ファイル容量 • アクセス状態 • etc etc... 25
- name: Cache Primes id: cache-primes uses: actions/cache@v3 with: path:
prime-numbers key: ${{ runner.os }}-primes 26
Con fi g less 27
28 Meets self-hosted runner
actions/cache internal 29 runner Azure blob storage GitHub Cache API
actions/cache internal 30 GitHub-hosted Azure blob storage GitHub Cache API
actions/cache internal 31 self-hosted Azure blob storage GitHub Cache API
- name: Cache Primes id: cache-primes uses: actions/cache@v3 with: path:
prime-numbers key: ${{ runner.os }}-primes 32 同じcon fi gが利⽤可能
actions/cache internal 33 🏠 self-hosted Azure blob storage GitHub Cache
API GitHub-hosted Azure blob storage GitHub Cache API
actions/cache internal 34 GitHub-hosted Azure blob storage GitHub Cache API
self-hosted Azure blob storage GitHub Cache API 同じ or 近い
actions/cache internal 35 GitHub-hosted Azure blob storage GitHub Cache API
self-hosted Azure blob storage GitHub Cache API 遠い
Benchmark 36 https://github.com/google/wireit/issues/ 239
遠すぎ🥺 37
@actions/cache (= library) • ライブラリとして内部的に組み込み可能 • actions/setup-go@v 4 • Dependency
cache is default enable • ruby/setup-ruby • rubyのキャッシュが難しく当初より実装 38
避けようがない🥺 39
世間の対応
Backend as a Amazon S 3 • S 3 などオブジェクトストレージをバックエンドに
利⽤したCustom Actionを作る案 • actions/cache に求める物がシンプルならこれでOK • 設定が煩雑になりがち • 各リポジトリごとに AWS_ACCESS_ID 書いたり 41
Backend as a Amazon S 3 • https://github.com/whywaita/actions-cache-s 3
作ってます (ました) • 社内オブジェクトストレージをバックエンドに採⽤ • 課題もいくつかあり • 設定の煩雑性 • GET時にLifecycleを伸ばす機能がS 3 にない 42
BuildJet cache • BuildJet: self-hosted runner 会社 • buildjet/cache@v 3
• バックエンドはCloud fl are R 2 • buildjet/setup-go などを完備 43
BuildJet cache 44
45 https://buildjet.com/for-github-actions/blog/launch-buildjet-cache
46 https://buildjet.com/for-github-actions/blog/launch-buildjet-cache
47 https://buildjet.com/for-github-actions/blog/launch-buildjet-cache
🥰🥰🥰 48
まとめ • self-hosted runnerをactions/cacheで使うと遅い • 海を越えてアクセスを⾏う必要があるため • 各位良い感じのソリューションで 最⾼体験をしてください!!!!!
• We Are hiring! 49