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
aqua で始める CI-Friendly なツール管理
Search
YuyaKoda
PRO
November 28, 2023
Business
2
1k
aqua で始める CI-Friendly なツール管理
Engineering Productivity Meetup #1 in Tokyo
https://cybozu.connpass.com/event/298452/
YuyaKoda
PRO
November 28, 2023
Tweet
Share
More Decks by YuyaKoda
See All by YuyaKoda
Kubernetes だけじゃない!Amazon ECS で実現するクラウドネイティブな GitHub Actions セルフホストランナー / CNDW2024
ponkio_o
PRO
6
460
Renovate ではじめる運用レスなライブラリ更新 / 令和最新版 他人に自慢したいヤバいCI/CD LT会 @ yabaibuki.dev #2
ponkio_o
PRO
1
210
Amazon ECS で作るスケーラブルなセルフホストランナー / GitHub Actions Meetup Tokyo #4
ponkio_o
PRO
2
720
業務で使えるかもしれない…!?GitHub Actions の Tips 集 / CI/CD Test Night #7
ponkio_o
PRO
43
17k
set-terraform-matrix という Actions を作った / set-terraform-matrix-actions
ponkio_o
PRO
0
480
NGINX Ingress Controller を活用した Retty のサービス開発とモニタリング / NGINX ユーザー会 2022 春
ponkio_o
PRO
0
170
Retty における Signal Sciences の導入事例 / Fastly Yamagoya 2021
ponkio_o
PRO
0
4.3k
Amazon EKS を活用した個人開発環境の整備と自動化への取り組み / CNDT2021
ponkio_o
PRO
0
500
Terraform における秘匿情報管理 / Credentials management in Terraform
ponkio_o
PRO
0
350
Other Decks in Business
See All in Business
1LDK会社紹介資料
1ldkinc
1
560
会社紹介資料 / ProfileBook
gpol
4
25k
重厚長大なものづくり企業におけるプロダクトマネジメントの挑戦と苦悩 / pmconf2024
tkchy
0
4.9k
freee + Product Design FY24 Q2
freee
4
9.4k
DNX Ventures Japan|Introduction Deck
natsumidnx
0
730
AWS re:Invent参加のリアル 〜女性目線で考える健康・美容・安全のベストプラクティス〜
o2mami
1
320
NEXERA inc. | Company Deck
nexera
0
7.7k
株式会社miibo|採用デック
natsumidnx
0
140
【エンジニア採用】BuySell Technologies会社説明資料
buyselltechnologies
2
54k
決算審査意見書自動作成ツール 改良プロジェクト
tokyo_metropolitan_gov_digital_hr
0
290
Sales Marker Culture Book(English)
salesmarker
PRO
1
3k
ハードウェア企業から700万ユーザーを抱えるB2B SaaSへ:PMのキャリアシフトで見えた共通点とギャップ
kubell_hr
0
3.8k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Making the Leap to Tech Lead
cromwellryan
133
9k
GitHub's CSS Performance
jonrohan
1030
460k
Unsuck your backbone
ammeep
669
57k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
160
Designing Experiences People Love
moore
138
23k
A designer walks into a library…
pauljervisheath
204
24k
How STYLIGHT went responsive
nonsquared
95
5.2k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Transcript
© DeNA Co., Ltd. 1 aqua で始める CI-Friendly な ツール管理
幸田優哉 品質本部品質管理部 SWET 第二グループ 株式会社ディー・エヌ・エー
© DeNA Co., Ltd. 2 Yuya Koda 今年の9月に DeNA に
Join しました。前職は toC の 会社でインフラ周りを中心に見ていました。 現在は主に社内向けに提供している GitHub Actions self-hosted runner の運用改善などを行っています。 DeNA 品質本部品質管理部 SWET 第二グループ ponkio-o ponkio_o yuya-koda y.koda0301 © DeNA Co., Ltd. 自己紹介
© DeNA Co., Ltd. 3 aquaproj/aqua
© DeNA Co., Ltd. 4 1 aquaproj/aqua とは • Golang
製のマルチプラットフォーム (Windows/Linux/Mac) で動く CLI ツール • ツールのジャンルとしては「CLI バージョンマネージャー」に分類される ◦ 類似ツールだと asdf が有名 ◦ 言語に特化したものだと nvm や pyenv などが有名 • 現在 (2023/11/14) サポートされているツールは 1300 以上 ◦ シングルバイナリで動くツールはだいたいサポートされている(はず) • aqua は様々な機能が存在するが、特に CI で便利に使える機能がたくさんある
© DeNA Co., Ltd. 5 簡単な使い方
© DeNA Co., Ltd. 6 2 簡単な使い方の紹介 (ツールのインストールから実行まで) 例:terraform コマンド
(hashicorp/terraform) をインストールする手順 1. aqua init で aqua.yaml を生成する 2. aqua g -i で “terraform” を検索して選択 (-i は aqua.yaml への自動追加のオプション) 3. aqua i -l でインストール (-l は Lazy Install のオプション) 4. “terraform” を実行する ※ aqua 本体のインストールや PATH の設定は済んでいる前提
© DeNA Co., Ltd. 7 簡単なデモ
© DeNA Co., Ltd. 8 aqua の CI-Friendly な機能
© DeNA Co., Ltd. 9 3 CI-Friendly な aqua の機能
CI で動かすツール管理をするうえで便利な機能がたくさんある • Single Binary & Cross Platform 対応 • Orb (CircleCI) / Actions (GitHub Actions) の提供 • 厳密なバージョン管理 • Renovate による継続的なバージョンアップデート • aqua i -l による Lazy Install • Checksum Verification / Policy as Code など Supply Chain Attack への対策 など
© DeNA Co., Ltd. 10 3 Single Binary & Cross
Platform • aqua 本体は Golang 製で Windows/Linux/Mac をサポート ◦ アーキテクチャは x86_64 と arm64 に対応 • シングルバイナリなので他の依存はない ◦ 利用する場合には aqua のバイナリを落として PATH を通すだけ • 最近では CI 環境の実行環境の種類 (OS/Arch) も増えてきているので便利
© DeNA Co., Ltd. 11 3 Orb (CircleCI) & Actions
(GitHub) の提供 • Orb (CircleCI) と Actions (GitHub Actions) が提供されている ◦ aqua 本体と aqua で管理しているツールのインストールが行われる ◦ Layz Install (後述) でインストールされる CircleCI の例 GitHub Actions の例
© DeNA Co., Ltd. 12 3 厳密なバージョン管理 • aqua では
latest や stable のような mutable なバージョン指定ができない ◦ これは不便なようにも見えますが特に CI では厳密にバージョンを管理するべき (だと個人的にも思っています) ◦ 個人的に気に入っている機能 (というか仕様) 公式ドキュメントの latest について書かれている箇所
© DeNA Co., Ltd. 13 3 Renovate による継続的なバージョンアップデート • aqua-renovate-config
で Renovate の Shareable Config Presets が提供されている • aqua 本体と aqua.yaml で管理しているツールのバージョンアップが行える ◦ extends で読み込む形なので schedule や automerge のルールは各プロジェクトに 合わせて任意のものを設定可能 renovate.json の例
© DeNA Co., Ltd. 14 3 aqua i -l による
Lazy Install のサポート • Lazy Install は、各種ツール (e.g. terraform) のインストール (バイナリのダウンロード) を「ツールの実行時」に実行するための機能 ◦ 各ツールの PATH は通されるが、バイナリはダウンロードされない ◦ そのツール (e.g. terraform) を実行したタイミングで初めてバイナリのダウンロード が始まる • CI では Job 毎に必要なツールが異なるケースがあるが、インストールする/しないを意 識する必要がない ◦ とりあえず aqua-installer を実行すれば OK ◦ aqua i -l は秒(文字通り)で終わる
© DeNA Co., Ltd. 15