1717
1818# This image is just the base image plus our updated bootc binary
1919base_img := " localhost/bootc"
20- # Derives from the above and adds nushell, cloudinit etc.
21- integration_img := base_img + " -integration"
2220# Has a synthetic upgrade
23- integration_upgrade_img := integration_img + " -upgrade"
21+ upgrade_img := base_img + " -upgrade"
2422
2523# ostree: The default
2624# composefs-sealeduki-sdboot: A system with a sealed composefs using systemd-boot
@@ -57,9 +55,19 @@ sealed_buildargs := "--build-arg=variant=" + variant + " --secret=id=secureboot_
5755#
5856# This first builds RPMs via the `package` target, then injects them
5957# into the container image.
60- build : package _keygen
58+ build : package _keygen && _pull-lbi-images
6159 @ just _build-from-package target/ packages
6260
61+ # Build container image using pre-existing packages from PATH.
62+ # This skips the package build step - useful when packages are provided
63+ # externally (e.g. downloaded from CI artifacts).
64+ build-from-packages PATH : _keygen && _pull-lbi-images
65+ @ just _build-from-package {{ PATH}}
66+
67+ # Pull images used by hack/lbi
68+ _ pull-lbi-images :
69+ podman pull -q --retry 5 --retry-delay 5 s {{ lbi_images}}
70+
6371# Compute SOURCE_DATE_EPOCH and VERSION from git for reproducible builds.
6472# Outputs shell variable assignments that can be eval'd.
6573_ git-build-vars :
@@ -115,28 +123,13 @@ package: _packagecontainer
115123 chmod a+ r target/ packages/ *.rpm
116124 podman rmi localhost/ bootc-pkg
117125
118- # Pull images used by hack/lbi
119- _ pull-lbi-images :
120- podman pull -q --retry 5 --retry-delay 5 s {{ lbi_images}}
121-
122- # This container image has additional testing content and utilities
123- build-integration-test-image : build _pull-lbi-images
124- cd hack && podman build {{ base_buildargs}} -t {{ integration_img}} -bin -f Containerfile .
125- ./ hack/ build-sealed {{ variant}} {{ integration_img}} -bin {{ integration_img}} {{ sealed_buildargs}}
126-
127- # Build integration test image using pre-existing packages from PATH
128- build-integration-test-image-from-package PATH : _keygen _pull-lbi-images
129- @ just _build-from-package {{ PATH}}
130- cd hack && podman build {{ base_buildargs}} -t {{ integration_img}} -bin -f Containerfile .
131- ./ hack/ build-sealed {{ variant}} {{ integration_img}} -bin {{ integration_img}} {{ sealed_buildargs}}
132-
133126# Build+test using the `composefs-sealeduki-sdboot` variant.
134127test-composefs :
135128 just variant=composefs-sealeduki-sdboot test-tmt readonly local-upgrade-reboot
136129
137130# Only used by ci.yml right now
138- build-install-test-image : build-integration-test-image
139- cd hack && podman build {{ base_buildargs}} -t {{ integration_img }} -install -f Containerfile.drop-lbis
131+ build-install-test-image : build
132+ cd hack && podman build {{ base_buildargs}} -t {{ base_img }} -install -f Containerfile.drop-lbis
140133
141134# These tests accept the container image as input, and may spawn it.
142135run-container-external-tests :
@@ -158,28 +151,29 @@ validate:
158151#
159152# To run an individual test, pass it as an argument like:
160153# `just test-tmt readonly`
161- test-tmt * ARGS : build-integration-test-image _build-upgrade-image
154+ test-tmt * ARGS : build
155+ @ just _build-upgrade-image
162156 @ just test-tmt-nobuild {{ ARGS}}
163157
164158# Generate a local synthetic upgrade
165159_ build-upgrade-image :
166- cat tmt/ tests/ Dockerfile.upgrade | podman build -t {{ integration_upgrade_img }} -bin --from={{ integration_img }} -bin -
167- ./ hack/ build-sealed {{ variant}} {{ integration_upgrade_img }} -bin {{ integration_upgrade_img }} {{ sealed_buildargs}}
160+ cat tmt/ tests/ Dockerfile.upgrade | podman build -t {{ upgrade_img }} -bin --from={{ base_img }} -bin -
161+ ./ hack/ build-sealed {{ variant}} {{ upgrade_img }} -bin {{ upgrade_img }} {{ sealed_buildargs}}
168162
169- # Assume the localhost/bootc-integration image is up to date, and just run tests.
163+ # Assume the localhost/bootc image is up to date, and just run tests.
170164# Useful for iterating on tests quickly.
171165test-tmt-nobuild * ARGS :
172- cargo xtask run-tmt --env =BOOTC_variant={{ variant}} --upgrade-image={{ integration_upgrade_img }} {{ integration_img }} {{ ARGS}}
166+ cargo xtask run-tmt --env =BOOTC_variant={{ variant}} --upgrade-image={{ upgrade_img }} {{ base_img }} {{ ARGS}}
173167
174168# Cleanup all test VMs created by tmt tests
175169tmt-vm-cleanup :
176170 bcvk libvirt rm --stop --force --label bootc.test=1
177171
178172# Run tests (unit and integration) that are containerized
179- test-container : build-units build-integration-test-image
173+ test-container : build build-units
180174 podman run --rm --read -only localhost/ bootc-units / usr/ bin/ bootc-units
181175 # Pass these through for cross-checking
182- podman run --rm --env =BOOTC_variant={{ variant}} --env =BOOTC_base={{ base}} {{ integration_img }} bootc-integration-tests container
176+ podman run --rm --env =BOOTC_variant={{ variant}} --env =BOOTC_base={{ base}} {{ base_img }} bootc-integration-tests container
183177
184178# Remove all container images built (locally) via this Justfile, by matching a label
185179clean -local-images:
0 commit comments