$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
2
470
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
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
890
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
870
ペアーズにおけるAIエージェント 基盤とText to SQLツールの紹介
hisamouna
0
420
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
1
480
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
2
200
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
190
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1k
SREには開発組織全体で向き合う
koh_naga
0
380
AI時代の新規LLMプロダクト開発: Findy Insightsを3ヶ月で立ち上げた舞台裏と振り返り
dakuon
0
230
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
160
RAG/Agent開発のアップデートまとめ
taka0709
0
190
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
160
Featured
See All Featured
So, you think you're a good person
axbom
PRO
0
1.8k
For a Future-Friendly Web
brad_frost
180
10k
Faster Mobile Websites
deanohume
310
31k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Fireside Chat
paigeccino
41
3.7k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
97
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
180
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Between Models and Reality
mayunak
0
130
[SF Ruby Conf 2025] Rails X
palkan
0
540
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