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
Real World Nix CI/CD編
Search
asa1984
March 09, 2025
Technology
2
390
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.1k
Other Decks in Technology
See All in Technology
プロジェクトマネジメントは不確実性との対話だ
hisashiwatanabe
0
180
結局QUICで通信は速くなるの?
kota_yata
9
7.5k
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
okana2ki
0
180
九州の人に知ってもらいたいGISスポット / gis spot in kyushu 2025
sakaik
0
220
新卒(ほぼ)専業Kagglerという選択肢
nocchi1
0
1.7k
認知戦の理解と、市民としての対抗策
hogehuga
0
130
工業高校で学習したとあるエンジニアのキャリアの話
shirayanagiryuji
0
130
第64回コンピュータビジョン勉強会@関東(後編)
tsukamotokenji
0
210
意志の力が9割。アニメから学ぶAI時代のこれから。
endohizumi
1
110
はじめての転職講座/The Guide of First Career Change
kwappa
5
4.5k
GCASアップデート(202506-202508)
techniczna
0
230
S3のライフサイクル設計でハマったポイント
mkumada
0
100
Featured
See All Featured
A designer walks into a library…
pauljervisheath
207
24k
A Tale of Four Properties
chriscoyier
160
23k
RailsConf 2023
tenderlove
30
1.2k
How GitHub (no longer) Works
holman
314
140k
Producing Creativity
orderedlist
PRO
347
40k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A better future with KSS
kneath
239
17k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
Become a Pro
speakerdeck
PRO
29
5.5k
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