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 の噛み合わせが悪かった件 ...
Search
whywaita
PRO
September 25, 2023
Technology
3
2k
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
masawada Advent Calendarのおもいで #masawadaアドベントカレンダー10周年
whywaita
PRO
0
2
過去事例から見るモニタリングの大切さ #techfeed_live
whywaita
PRO
2
1.2k
バリエーションで差をつける。myshoesの新たな挑戦 #cicd_test_night
whywaita
PRO
0
5.5k
ディスクレスハイパーバイザ 〜運用しやすいクラウドのために〜
whywaita
PRO
0
160
Securing CI/CD Systems Through eBPF (recap)
whywaita
PRO
1
930
GitHub Actions runner基盤におけるオンプレミスマルチテナントアプリケーションの運用 #CADC2022
whywaita
PRO
1
480
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with your shoes. #cndjp
whywaita
PRO
0
45
イベント企画運営の経験と実際 / The history of organizing events by me
whywaita
PRO
0
21
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in CyberAgent Internet Seminer
whywaita
PRO
0
110
Other Decks in Technology
See All in Technology
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
250
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
210
MLOps の現場から
asei
6
650
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
4
560
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
Storage Browser for Amazon S3
miu_crescent
1
200
Featured
See All Featured
Unsuck your backbone
ammeep
669
57k
Gamification - CAS2011
davidbonilla
80
5.1k
Optimizing for Happiness
mojombo
376
70k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
How GitHub (no longer) Works
holman
311
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Side Projects
sachag
452
42k
Thoughts on Productivity
jonyablonski
67
4.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Practical Orchestrator
shlominoach
186
10k
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