The `test_assembler.py` hardcods some filesystem and partition UUIDs. This leads to hard to diagnose test failures when the test is run in parallel. The btrfs and xfs filesystem drivers will see the same uuid for multi created images and error sometimes with someting like: ``` Mar 06 10:22:54 top kernel: BTRFS error: device /dev/loop104 belongs to fsid aff010e9-df95-4f81-be6b-e22317251033, and the fs is already mounted, scanned by mount (123856) ``` Its a race that only happens when two images are checked at the same time. This commit fixes the issue by just using a randomized UUID in the test_assemblers.py. It also re-enables running the test in parallel (which make it run a lot faster, from 34min to 14min).
74 lines
2.7 KiB
YAML
74 lines
2.7 KiB
YAML
name: Tests
|
|
|
|
on: [pull_request, push]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
test_suite:
|
|
name: "Unittest"
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
test:
|
|
- "test.mod"
|
|
- "test.run.test_boot"
|
|
- "test.run.test_devices"
|
|
- "test.run.test_executable"
|
|
- "test.run.test_mount"
|
|
- "test.run.test_noop"
|
|
- "test.run.test_sources"
|
|
- "test.run.test_stages"
|
|
- "stages/test"
|
|
environment:
|
|
- "py36" # RH8
|
|
- "py39" # RH9
|
|
- "py312" # latest fedora
|
|
steps:
|
|
- name: "Clone Repository"
|
|
uses: actions/checkout@v3
|
|
- name: "Run"
|
|
uses: osbuild/containers/src/actions/privdocker@552e30cf1b4ed19c6ddaa57f96c342b3dff4227b
|
|
with:
|
|
image: ghcr.io/osbuild/osbuild-ci:latest-202308241910
|
|
run: |
|
|
# Note that only "test.run.test_stages" runs in parallel because
|
|
# the other tests are not sufficiently isolated and will cause
|
|
# random failures. But test_stages is the long running one with
|
|
# almost 2h.
|
|
if [ "${{ matrix.test }}" = "test.run.test_stages" ]; then
|
|
# Using 4 workers is a bit arbitrary, "auto" is probably too
|
|
# aggressive.
|
|
export TEST_WORKERS="-n 4"
|
|
# Share the store between the workers speeds things up further
|
|
export OSBUILD_TEST_STORE=/var/tmp/osbuild-test-store
|
|
fi
|
|
|
|
# Hacky replacement of container storage driver:
|
|
# The default overlayfs doesn't work in the runner, so let's change
|
|
# it to vfs for the local storage skopeo stage test.
|
|
sed -i 's/overlay/vfs/g' /usr/share/containers/storage.conf # default system config
|
|
sed -i 's/overlay/vfs/g' /etc/containers/storage.conf || true # potential overrides
|
|
TEST_CATEGORY="${{ matrix.test }}" \
|
|
tox -e "${{ matrix.environment }}"
|
|
|
|
v1_manifests:
|
|
name: "Assembler test (legacy)"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: "Clone Repository"
|
|
uses: actions/checkout@v4
|
|
- name: "Run"
|
|
uses: osbuild/containers/src/actions/privdocker@552e30cf1b4ed19c6ddaa57f96c342b3dff4227b
|
|
with:
|
|
image: ghcr.io/osbuild/osbuild-ci:latest-202308241910
|
|
run: |
|
|
# Using 4 workers is a bit arbitrary, "auto" is probably too
|
|
# aggressive.
|
|
export TEST_WORKERS="-n 4"
|
|
export OSBUILD_TEST_STORE=/var/tmp/osbuild-test-store
|
|
TEST_CATEGORY="test.run.test_assemblers" \
|
|
tox -e "py36"
|