|
1 | | -name: Build and Push Docker Images with Nix |
| 1 | +name: Build and Push Docker Images with Nix Flakes |
2 | 2 |
|
3 | 3 | on: |
4 | 4 | push: |
@@ -31,15 +31,19 @@ jobs: |
31 | 31 | - name: Checkout |
32 | 32 | uses: actions/checkout@v4 |
33 | 33 |
|
34 | | - - name: Set up Nix |
| 34 | + - name: Set up Nix with Flakes support |
35 | 35 | uses: cachix/install-nix-action@v22 |
36 | 36 | with: |
37 | 37 | nix_path: nixpkgs=channel:nixos-unstable |
| 38 | + extra_nix_config: | |
| 39 | + experimental-features = nix-command flakes |
| 40 | + allow-import-from-derivation = true |
38 | 41 |
|
39 | | - - name: Build Docker image with Nix |
| 42 | + - name: Build Docker image with Nix Flakes |
40 | 43 | run: | |
41 | | - # 使用 nix-shell 提供所需的环境,避免全局安装 |
42 | | - nix-shell -p dockerTools gnutar gzip --run "nix-build docker.nix --option sandbox false" |
| 44 | + # 使用 nix flake 构建,利用 flake.nix 中定义的环境 |
| 45 | + # 启用缓存以提高构建速度 |
| 46 | + nix build .#docker-image --option sandbox false |
43 | 47 |
|
44 | 48 | - name: Set up Docker Buildx |
45 | 49 | uses: docker/setup-buildx-action@v3 |
|
54 | 58 |
|
55 | 59 | - name: Load Docker image |
56 | 60 | run: | |
| 61 | + # 使用 nix build 的结果加载 Docker 镜像 |
57 | 62 | docker load < result |
58 | 63 |
|
59 | 64 | - name: Extract metadata |
@@ -177,13 +182,17 @@ jobs: |
177 | 182 | steps: |
178 | 183 | - name: Generate summary |
179 | 184 | run: | |
180 | | - echo "## 🐳 Docker Image Build Summary" >> $GITHUB_STEP_SUMMARY |
| 185 | + echo "## 🐳 Docker Image Build Summary (Nix Flakes)" >> $GITHUB_STEP_SUMMARY |
181 | 186 | echo "" >> $GITHUB_STEP_SUMMARY |
182 | 187 | echo "**Image:** \`${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}\`" >> $GITHUB_STEP_SUMMARY |
183 | 188 | echo "" >> $GITHUB_STEP_SUMMARY |
184 | 189 | echo "**Tags:**" >> $GITHUB_STEP_SUMMARY |
185 | 190 | echo "- \`secure-latest\`" >> $GITHUB_STEP_SUMMARY |
186 | 191 | echo "" >> $GITHUB_STEP_SUMMARY |
| 192 | + echo "**Build System:**" >> $GITHUB_STEP_SUMMARY |
| 193 | + echo "- ✅ Nix Flakes for reproducible builds" >> $GITHUB_STEP_SUMMARY |
| 194 | + echo "- ✅ Declarative environment management" >> $GITHUB_STEP_SUMMARY |
| 195 | + echo "" >> $GITHUB_STEP_SUMMARY |
187 | 196 | echo "**Features:**" >> $GITHUB_STEP_SUMMARY |
188 | 197 | echo "- ✅ Secure Python 3.12 environment" >> $GITHUB_STEP_SUMMARY |
189 | 198 | echo "- ✅ UV package manager" >> $GITHUB_STEP_SUMMARY |
|
0 commit comments