-
Notifications
You must be signed in to change notification settings - Fork 112
ci: Add support for bootc end-to-end validation tests #790
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1,2 @@ | ||
| iif | ||
| passt |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -105,7 +105,29 @@ jobs: | |
| python3 -m pip install --upgrade pip | ||
| sudo apt update | ||
| sudo apt install -y --no-install-recommends git ansible-core genisoimage qemu-system-x86 | ||
| pip3 install "git+https://github.com/linux-system-roles/[email protected]" | ||
| pip3 install "git+https://github.com/linux-system-roles/[email protected]" | ||
|
|
||
| # HACK: Drop this when moving this workflow to 26.04 LTS | ||
| - name: Update podman to 5.x for compatibility with bootc-image-builder's podman 5 | ||
| if: steps.check_platform.outputs.supported && endsWith(matrix.scenario.image, '-bootc') | ||
| run: | | ||
| sed 's/noble/plucky/g' /etc/apt/sources.list.d/ubuntu.sources | sudo tee /etc/apt/sources.list.d/plucky.sources >/dev/null | ||
| cat <<EOF | sudo tee /etc/apt/preferences.d/podman.pref >/dev/null | ||
| Package: podman buildah golang-github-containers-common crun libgpgme11t64 libgpg-error0 golang-github-containers-image catatonit conmon containers-storage | ||
| Pin: release n=plucky | ||
| Pin-Priority: 991 | ||
|
|
||
| Package: libsubid4 netavark passt aardvark-dns containernetworking-plugins libslirp0 slirp4netns | ||
| Pin: release n=plucky | ||
| Pin-Priority: 991 | ||
|
|
||
| Package: * | ||
| Pin: release n=plucky | ||
| Pin-Priority: 400 | ||
| EOF | ||
|
|
||
| sudo apt update | ||
| sudo apt install -y podman crun conmon containers-storage | ||
|
|
||
| - name: Configure tox-lsr | ||
| if: steps.check_platform.outputs.supported | ||
|
|
@@ -117,7 +139,7 @@ jobs: | |
| if: steps.check_platform.outputs.supported && startsWith(matrix.scenario.env, 'qemu') | ||
| run: >- | ||
| tox -e ${{ matrix.scenario.env }} -- --image-name ${{ matrix.scenario.image }} --make-batch | ||
| --log-level debug --skip-tags tests::infiniband,tests::nvme,tests::scsi | ||
| --log-level debug $TOX_ARGS --skip-tags tests::bootc-e2e | ||
| --lsr-report-errors-url DEFAULT -- | ||
|
|
||
| - name: Qemu result summary | ||
|
|
@@ -164,6 +186,28 @@ jobs: | |
| done | ||
| exit $rc | ||
|
|
||
| - name: Run bootc validation tests in QEMU | ||
| if: steps.check_platform.outputs.supported && | ||
| startsWith(matrix.scenario.env, 'container') && | ||
| endsWith(matrix.scenario.image, '-bootc') | ||
| run: | | ||
| set -euxo pipefail | ||
| env=$(echo "${{ matrix.scenario.env }}" | sed 's/^container-/qemu-/') | ||
|
|
||
| for image_file in $(ls tests/tmp/*/qcow2/disk.qcow2 2>/dev/null); do | ||
| test="tests/$(basename $(dirname $(dirname $image_file))).yml" | ||
| if tox -e "$env" -- --image-file "$(pwd)/$image_file" \ | ||
| --log-level debug $TOX_ARGS \ | ||
| --lsr-report-errors-url DEFAULT \ | ||
| -e __bootc_validation=true \ | ||
| -- "$test" >out 2>&1; then | ||
| mv out "${test}-PASS.log" | ||
| else | ||
| mv out "${test}-FAIL.log" | ||
| exit 1 | ||
| fi | ||
| done | ||
|
|
||
| - name: Upload test logs on failure | ||
| if: failure() | ||
| uses: actions/upload-artifact@v4 | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -70,3 +70,51 @@ ansible-playbook --skip-tags tests::cleanup \ | |||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| [NM 1.0](https://lazka.github.io/pgi-docs/#NM-1.0), it contains a full | ||||||||||||||||||||||||||||||||||
| explanation about the NetworkManager API. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ### Integration tests with podman | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 1. Create `~/.ansible/collections/ansible_collections/containers/podman/` if this | ||||||||||||||||||||||||||||||||||
| directory does not exist and `cd` into this directory. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||
| mkdir -p ~/.ansible/collections/ansible_collections/containers/podman/ | ||||||||||||||||||||||||||||||||||
| cd ~/.ansible/collections/ansible_collections/containers/podman/ | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 2. Clone the collection plugins for Ansible-Podman into the current directory. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||
| git clone https://github.com/containers/ansible-podman-collections.git . | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 3. Change directory into the `tests` subdirectory. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||
| cd ~/network/tests | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 4. Use podman with `-d` to run in the background (daemon). Use `c7` because | ||||||||||||||||||||||||||||||||||
| `centos/systemd` is centos7. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||
| podman run --name lsr-ci-c7 --rm --privileged \ | ||||||||||||||||||||||||||||||||||
| -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ | ||||||||||||||||||||||||||||||||||
| -d registry.centos.org/centos/systemd | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 5. Use `podman unshare` first to run "podman mount" in root mode, use `-vi` to | ||||||||||||||||||||||||||||||||||
| run ansible as inventory in verbose mode, use `-c podman` to use the podman | ||||||||||||||||||||||||||||||||||
| connection plugin. NOTE: Some of the tests do not work with podman - see | ||||||||||||||||||||||||||||||||||
| `.github/run_test.sh` for the list of tests that do not work. | ||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||
| podman unshare | ||||||||||||||||||||||||||||||||||
| ansible-playbook -vi lsr-ci-c7, -c podman tests_provider_nm.yml | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
|
Comment on lines
+105
to
+113
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. suggestion: Clarify the purpose of Clarify that
Suggested change
|
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| 6. NOTE that this leaves the container running in the background, to kill it: | ||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nitpick: Use more precise term than 'kill it' Replace 'to kill it:' with 'to stop and remove it:' to better reflect the use of |
||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||
| ```bash | ||||||||||||||||||||||||||||||||||
| podman stop lsr-ci-c7 | ||||||||||||||||||||||||||||||||||
| podman rm lsr-ci-c7 | ||||||||||||||||||||||||||||||||||
| ``` | ||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
issue: Clarify path context for
~/network/testsSpecify that
~/network/testsis thetestsdirectory within the cloned repository, and note that users should adjust the path if their clone location differs.