$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Real World Nix CI/CD編
Search
asa1984
March 09, 2025
Technology
3
480
Real World Nix CI/CD編
Nix meetup #2 の飛び入り LT に登壇した際のスライド
asa1984
March 09, 2025
Tweet
Share
More Decks by asa1984
See All by asa1984
Nix入門パラダイム編
asa1984
5
1.3k
Other Decks in Technology
See All in Technology
さくらのクラウド開発ふりかえり2025
kazeburo
2
310
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
1.1k
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
810
コンテキスト情報を活用し個社最適化されたAI Agentを実現する4つのポイント
kworkdev
PRO
1
1.8k
20251222_next_js_cache__1_.pdf
sutetotanuki
0
150
AI との良い付き合い方を僕らは誰も知らない
asei
0
230
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
1
240
mairuでつくるクレデンシャルレス開発環境 / Credential-less development environment using Mailru
mirakui
5
590
IAMユーザーゼロの運用は果たして可能なのか
yama3133
2
520
ESXi のAIOps だ!2025冬
unnowataru
0
280
Bedrock AgentCore Evaluationsで学ぶLLM as a judge入門
shichijoyuhi
1
150
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
200
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
72
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
980
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
140
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Skip the Path - Find Your Career Trail
mkilby
0
25
It's Worth the Effort
3n
187
29k
Site-Speed That Sticks
csswizardry
13
1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
92
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Transcript
Real World Nix CI/CD編 asa1984
asa1984 - 名前の読み方: アサヒ - Asahi (本名) + ジョージ・オーウェル『1984』 -
自称 Web フロントエンドエンジニア 所属 - 仙台高専ロボティクスコース (2020 ~ 2025-03) - ??? 2
asa1984 - 名前の読み方: アサヒ - Asahi (本名) + ジョージ・オーウェル『1984』 -
自称 Web フロントエンドエンジニア 所属 - 仙台高専ロボティクスコース (2020 ~ 2025-03) - HERP (2025-04~) - スタートアップの HR Tech - Nix をプロダクションで利用している超おもしろ企業 3
報告 就職しました 1. Nix meetup #1 に参加 (2024-10) 2. 懇親会で
HERP の方にインターンを紹介される 3. インターン参加 (2024-12) 4. 入社 (2025-04 予定) 4
報告 就職しました 1. Nix meetup #1 に参加 (2024-10) 2. 懇親会で
HERP の方にインターンを紹介される 3. インターン参加 (2024-12) 4. 入社 (2025-04 予定) Nix meetup 運営の皆様、ありがとうございます!!! 5
本編 → 6 ← 余談
Real World Nix CI/CD編 asa1984
Real World で Nix を CI/CD 編 に 利用する話 asa1984
- 全部 Nix - home-manager - NixOS (Desktop) 9 -
devShell - CI/CD - NixOS (Infra) DARK SIDE LIGHT SIDE プロダクション に投入可能 ギーク向け
CI/CD に Nix を用いるメリット - 開発環境と CI 環境のツールの統一 - devShell
を使えば簡単に同じツールを導入できる - デプロイ時間の短縮 - バイナリキャッシュを利用できる - IaaC としての性質 - 再現性・宣言的 10
基本 - devShell / pkgs.buildEnv - CI 環境への Nix 導入
11
1. devShell を用意する - まずは開発環境をセットアッ プしよう - flake.nix で devShell
を定義 - nix develop で起動 - nix-direnv を使うともっと 体験が良い 12
2. CI 用パッケージを用意する - CI で使うパッケージを定義 - pkgs.buildEnv - 複数のパッケージをまとめ
て1つのパッケージにするこ とができる 13
2. CI 用パッケージを用意する - CI で使うパッケージを定義 - pkgs.buildEnv - 複数のパッケージをまとめ
て1つのパッケージにするこ とができる Q. devShell 使わないの? A. Workflow でシェルを起動 してはいけない (1敗) 14
3. CI 環境に Nix を導入する GitHub Actions の場合 - DeterminateSystems/nix-installer-action
- cachix/install-nix-action - etc… 上2つのどちらかを使えば OK 15
4. パッケージをインストールする - nix profile install .#ci - nix profile
の使い所 - packages.ci をグローバルインストールする あとは普通の CI と同様にコマンドを使えるので OK 16
応用 - バイナリキャッシュ - Docker イメージ - self-hosted runner 17
バイナリキャッシュ on CI Nixpkgs はバイナリキャッシュがあるが… - 当然ダウンロードに時間はかかる - 自前ビルドしている場合は尚更 18
バイナリキャッシュ on CI Nixpkgs はバイナリキャッシュがあるが… - 当然ダウンロードに時間はかかる - 自前ビルドしている場合は尚更 CI
環境限定のバイナリキャッシュを作る - ローカルバイナリキャッシュストア - GitHub Actions Cache API - nix copy 参照: asa1984/infra/.github/actions/binary-cache/action.yaml 19
バイナリキャッシュ on デプロイ - デプロイ対象が Nix でビル ドされているならバイナリ キャッシュを利用できる -
Nix が想定している利用方法 (Nix meetup #1「Nix入門: パラダイム編」参照) 20 Supabase の例
Docker with Nix pkgs.dockerTools.buildImage - Docker image をビルドする関数 - 必要なものだけが入ったミニマルイメージができる
- distroless より小さくできる - 同様に self-hosted runner もビルド可能 - pkgs.github-runner 21
追記: お役立ちリンク - github:asa1984/infra - https://github.com/asa1984/infra - バイナリキャッシュを作ろう - https://zenn.dev/asa1984/articles/make-a-binary-cache
- Nix is a better Docker image builder than Docker's image builder - https://xeiaso.net/talks/2024/nix-docker-build 22