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
self-hosted runnerと actions/cache の噛み合わせが悪かった件 ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
whywaita
PRO
September 25, 2023
Technology
4k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
self-hosted runnerと actions/cache の噛み合わせが悪かった件 #githubactionsmeetup
Talked by
GitHub Actions Meetup Tokyo #2
whywaita
PRO
September 25, 2023
More Decks by whywaita
See All by whywaita
数字からみるwhywaita Advent Calendar #whywaitaAdventCalendar10周年
whywaita
PRO
0
300
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
570
masawada Advent Calendarのおもいで #masawadaアドベントカレンダー10周年
whywaita
PRO
0
130
過去事例から見るモニタリングの大切さ #techfeed_live
whywaita
PRO
2
1.5k
バリエーションで差をつける。myshoesの新たな挑戦 #cicd_test_night
whywaita
PRO
0
6.2k
ディスクレスハイパーバイザ 〜運用しやすいクラウドのために〜
whywaita
PRO
0
340
Securing CI/CD Systems Through eBPF (recap)
whywaita
PRO
1
1.1k
GitHub Actions runner基盤におけるオンプレミスマルチテナントアプリケーションの運用 #CADC2022
whywaita
PRO
1
650
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with your shoes. #cndjp
whywaita
PRO
0
110
Other Decks in Technology
See All in Technology
~最速でビジネスインパクトを創出する~ Sansanのデータ基盤と活用事例
sansantech
PRO
0
110
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
130
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
250
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
140
How to Design Configuration for Rails Applications
willnet
1
1.1k
ガチで放置できるClaude Code実行環境の作り方.pdf
lamaglama39
0
3.4k
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
210
AI時代のGraphQL
joere
2
320
野良MCPサーバーを排除せよ!MCPサーバーのガバナンス
yukiogawa
1
150
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
250
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
PRO
0
460
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.3k
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1.1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Navigating Team Friction
lara
192
16k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Practical Orchestrator
shlominoach
192
12k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Speed Design
sergeychernyshev
33
2.2k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Skip the Path - Find Your Career Trail
mkilby
1
260
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
440
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