From c54933b0954f99d376d7021c96dfa590e4f13b8e Mon Sep 17 00:00:00 2001 From: Jose Gomez <1josegomezr@gmail.com> Date: Wed, 6 Dec 2023 23:19:39 +0100 Subject: [PATCH 1/2] Skip job openQA if credentials are not configured --- .github/workflows/openqa.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/openqa.yml b/.github/workflows/openqa.yml index 07f0d1f..ebfb0cd 100644 --- a/.github/workflows/openqa.yml +++ b/.github/workflows/openqa.yml @@ -20,9 +20,16 @@ jobs: container: image: registry.opensuse.org/devel/openqa/containers/tumbleweed:client steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Trigger and monitor openQA test - run: > + id: openqa_schedule + run: | + if [[ "x$OPENQA_API_KEY" == 'x' && "x$OPENQA_API_SECRET" == 'x' ]]; then + echo "Skipping OpenQA Schedule step: No API Keys configured." + echo "Configure OPENQA_API_KEY & OPENQA_API_SECRET secrets" + exit 0 + fi + openqa-cli schedule \ --monitor \ --host "${OPENQA_HOST:-https://openqa.opensuse.org}/" \ From ed4c006e8d9c6b2f55b028560b21fdbcef06c91b Mon Sep 17 00:00:00 2001 From: "Jose D. Gomez R" Date: Wed, 20 Dec 2023 13:59:51 +0100 Subject: [PATCH 2/2] Make isotovideo workflows more GitHub Native MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Improved isotovideo example workflow, it can be easily extended with a matrix as per GitHub Actions docs [0]. It brings: - A perl script for checking the test results, to remove `jq` usages. - Pipeline Artifacts, it's possible to inspect the test results after a run. And now the example workflow is green and not repeated. - Skip job openQA if credentials are not configured. [0]: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#example-expanding-configurations Co-authored-by: Martchus Co-authored-by: Tina Müller Co-authored-by: Oliver Kurz --- .github/workflows/isotovideo-action.yml | 19 --------- .../isotovideo-check-all-test-modules.yml | 16 ------- .github/workflows/isotovideo.yml | 42 ++++++++++++++++--- .github/workflows/openqa.yml | 7 +--- 4 files changed, 38 insertions(+), 46 deletions(-) delete mode 100644 .github/workflows/isotovideo-action.yml delete mode 100644 .github/workflows/isotovideo-check-all-test-modules.yml diff --git a/.github/workflows/isotovideo-action.yml b/.github/workflows/isotovideo-action.yml deleted file mode 100644 index 078798b..0000000 --- a/.github/workflows/isotovideo-action.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: isotovideo - github action example -# yamllint disable-line rule:truthy -on: [push, pull_request] -jobs: - test: - runs-on: ubuntu-20.04 - container: - image: "registry.opensuse.org/devel/openqa/containers/isotovideo:qemu-x86-jq" - steps: - - uses: actions/checkout@v2 - - name: install jq - run: zypper -n in jq - - - name: Run isotovideo against test code - run: isotovideo qemu_no_kvm=1 casedir=. - - - name: fail if any test module failed - run: jq .result testresults/result-*.json | grep -v ok && echo "Test modules failed" && exit 1 diff --git a/.github/workflows/isotovideo-check-all-test-modules.yml b/.github/workflows/isotovideo-check-all-test-modules.yml deleted file mode 100644 index ee4ab09..0000000 --- a/.github/workflows/isotovideo-check-all-test-modules.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: isotovideo - check all test modules -# yamllint disable-line rule:truthy -on: [push, pull_request] -jobs: - test: - # "ubuntu-latest" at time of writing 2020-12-14 is Ubuntu 18.04 showing a - # network problem "level=error msg="could not find slirp4netns, the - # network namespace won't be configured: exec: \"slirp4netns\": executable - # file not found in $PATH"" - # which can be fixed with a more recent version of Ubuntu explicitly - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v2 - - name: Run isotovideo against test code, fail if any test module failed - run: podman run --rm -it -v .:/tests:Z --entrypoint '' registry.opensuse.org/devel/openqa/containers/isotovideo:qemu-x86-jq /bin/sh -c 'isotovideo qemu_no_kvm=1 casedir=/tests && jq .result testresults/result-*.json | grep -v ok && echo "Test modules failed" && exit 1' diff --git a/.github/workflows/isotovideo.yml b/.github/workflows/isotovideo.yml index a08209b..d7280a3 100644 --- a/.github/workflows/isotovideo.yml +++ b/.github/workflows/isotovideo.yml @@ -1,11 +1,43 @@ --- name: isotovideo # yamllint disable-line rule:truthy -on: [push, pull_request] +on: + - push + - pull_request jobs: - test: + isotovideo: + strategy: + matrix: + # An example matrix, it'll create a derivate job for each + # item specified here. For simplicity sake the example below + # has the full var line since it's easy enough. + # + # For more complex setups it'll be worth exploring advance matrix setups + # see: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#example-expanding-configurations + isotovideo-args: + - "--exit-status-from-test-results qemu_no_kvm=1 casedir=." runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Run isotovideo against test code in happy-path scenario - run: podman run --rm -it -v .:/tests:Z registry.opensuse.org/devel/openqa/containers/isotovideo:qemu-x86 qemu_no_kvm=1 casedir=/tests + - uses: actions/checkout@v4 + + - name: Run isotovideo against test code + uses: "docker://registry.opensuse.org/devel/openqa/containers/isotovideo:qemu-x86" + with: + args: ${{ matrix.isotovideo-args }} ${{ env.ACTIONS_STEP_DEBUG && '--debug' || '' }} + entrypoint: 'isotovideo' + + - name: Archive test artifcats + if: always() + uses: actions/upload-artifact@v3 + with: + name: isotovideo-artifacts + path: | + ./testresults/ + ./video.ogv + ./video_time.vtt + ./qemu_state.json + ./serial_terminal.txt + ./virtio_console.log + ./virtio_console1.log + ./virtio_console_user.log + retention-days: 7 diff --git a/.github/workflows/openqa.yml b/.github/workflows/openqa.yml index ebfb0cd..4833c78 100644 --- a/.github/workflows/openqa.yml +++ b/.github/workflows/openqa.yml @@ -19,17 +19,12 @@ jobs: runs-on: ubuntu-latest container: image: registry.opensuse.org/devel/openqa/containers/tumbleweed:client + if: ${{ env.OPENQA_API_KEY && env.OPENQA_API_SECRET }} steps: - uses: actions/checkout@v4 - name: Trigger and monitor openQA test id: openqa_schedule run: | - if [[ "x$OPENQA_API_KEY" == 'x' && "x$OPENQA_API_SECRET" == 'x' ]]; then - echo "Skipping OpenQA Schedule step: No API Keys configured." - echo "Configure OPENQA_API_KEY & OPENQA_API_SECRET secrets" - exit 0 - fi - openqa-cli schedule \ --monitor \ --host "${OPENQA_HOST:-https://openqa.opensuse.org}/" \