cd ~/repo
sow add ~/repo/packages/rpm --recursive -r infra -d rpm --skip
sow add ~/repo/packages/deb --recursive -r infra -d deb --skip
sow build -r infra -d rpm -d deb
sow check -r infra
sow check 成功后,列出 SOW 从包内元数据读出的格式与架构:
sow ls -r infra -d rpm -d deb --json | jq -r '.result.packages | group_by(.format + "/" + .canonical_arch)[] |
"\(.[0].format)\t\(.[0].canonical_arch)\t\(length) packages"'
预期至少出现:
deb aarch64 ... packages
deb x86_64 ... packages
rpm aarch64 ... packages
rpm x86_64 ... packages
SOW 使用规范化架构名,因此 DEB 的 amd64/arm64 在这里显示为 x86_64/aarch64。
cd ~/repo
sow dist new rpm-stable --format rpm -r infra
sow dist new deb-stable --format deb -r infra
sow config show -r infra -d rpm-stable -d deb-stable
set -euo pipefail
cd ~/repo
sow check -r infra
mkdir -p ~/repo/manifests
sow ls -r infra -d rpm --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/rpm-latest-202608.list
sow ls -r infra -d deb --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/deb-latest-202608.list
把清单中的包池对象加入 stable Dist:
cd ~/repo
(set -euo pipefail
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d rpm-stable --skip
done < ~/repo/manifests/rpm-latest-202608.list
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d deb-stable --skip
done < ~/repo/manifests/deb-latest-202608.list
sow build -r infra -d rpm-stable -d deb-stable
sow check -r infra
)
cd ~/repo
sow dist new rpm-202608 --format rpm -r infra
sow dist new deb-202608 --format deb -r infra
sow config show -r infra -d rpm-202608 -d deb-202608
创建快照期间,暂停其他仓库写入任务。先保存 stable 的包清单:
set -euo pipefail
sow check -r infra
sow ls -r infra -d rpm-stable --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/rpm-stable-202608.list
sow ls -r infra -d deb-stable --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/deb-stable-202608.list
再把清单加入对应快照 Dist:
cd ~/repo
(set -euo pipefail
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d rpm-202608 --skip
done < ~/repo/manifests/rpm-stable-202608.list
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d deb-202608 --skip
done < ~/repo/manifests/deb-stable-202608.list
sow build -r infra -d rpm-202608 -d deb-202608
sow check -r infra
)
如需在将来删除快照 Dist 后仍保留这次构建,另外记录当前仓库构建快照:
sow retain add "$(sow status -r infra --json | jq -r '.result.built_generation')" -r infra
sow retain ls -r infra