Skip to content

Commit

Permalink
Linting & Improved workflows
Browse files Browse the repository at this point in the history
- 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.

- Added `use warnings` to perl scripts as per good practices.

[0]: https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#example-expanding-configurations
  • Loading branch information
josegomezr committed Dec 14, 2023
1 parent 1bda543 commit 81ee6fd
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 41 deletions.
15 changes: 15 additions & 0 deletions .github/workflows/commit-message-checker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
name: 'Commit message check'

on:
pull_request:
push:
branches:
# we must not fix commit messages when they already reached main
- '!main'

jobs:
check-commit-message:
secrets:
accessToken: "${{ secrets.GITHUB_TOKEN }}"
uses: os-autoinst/os-autoinst-common/.github/workflows/base-commit-message-checker.yml@master
19 changes: 0 additions & 19 deletions .github/workflows/isotovideo-action.yml

This file was deleted.

16 changes: 0 additions & 16 deletions .github/workflows/isotovideo-check-all-test-modules.yml

This file was deleted.

49 changes: 43 additions & 6 deletions .github/workflows/isotovideo.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,48 @@
---
name: isotovideo
# yamllint disable-line rule:truthy
on: [push, pull_request]
on:
- pull_request
jobs:
test:
runs-on: ubuntu-latest
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:
- "qemu_no_kvm=1 casedir=."
runs-on: ubuntu-20.04
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: Validate test results
uses: "docker://registry.opensuse.org/devel/openqa/containers/isotovideo:qemu-x86"
with:
args: ./testresults/
entrypoint: "./scripts/validate-test-results"

- 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
2 changes: 2 additions & 0 deletions main.pm
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
# SPDX-License-Identifier: GPL-2.0-or-later

use strict;
use warnings;

use testapi;
use autotest;

Expand Down
31 changes: 31 additions & 0 deletions scripts/validate-test-results
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/usr/bin/env perl

# Copyright 2023 SUSE LLC
# SPDX-License-Identifier: GPL-2.0-or-later

use strict;
use warnings;

use Mojo::JSON qw(decode_json);
use Mojo::Path;
use Mojo::File qw(path);

my @args = @ARGV;
my @test_results_to_check = ();

while(@args){
my $arg = shift @args;
@args = (@args, glob("$arg/result-*.json")) if -d $arg;
next unless $arg =~ m/result-.+\.json$/;
push @test_results_to_check, $arg if -f $arg;
}

while(@test_results_to_check){
my $path = Mojo::Path->new(shift @test_results_to_check)->canonicalize;
my $result = decode_json(path($path)->slurp)->{result};

printf "Test result [%s] -> [%s]\n", $path->to_string, $result;
exit 1 unless $result eq 'ok';
}

exit 0;
3 changes: 3 additions & 0 deletions tests/boot.pm
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@

use base 'basetest';
use strict;
use warnings;

use base 'basetest';
use testapi;

sub run {
Expand Down

0 comments on commit 81ee6fd

Please sign in to comment.