Build and CI tests should run automatically whenever a pull request is
opened, reopened or updated. On the other hand, it is not necessary to
run build and CI tests on the events ready_for_review and
review_requested.
This change adds markdown output support to tapfile helper.
tap_generate_report() has been refactored to use low-level output
functions to write tests; TAP and markdown output is supported and both
are generated by default. Also, it should be straightforward to add
other output formats by implementing the respective low level print
functions.
The markdown output is now used by run-kola-tests.yaml to generate step
output and, if run from a PR, add a comment with test results to the PR.
Signed-off-by: Thilo Fromm <thilofromm@microsoft.com>
This change updates the github actions kola test runner workflow to use
the new, separated artifacts produced by ci.yaml.
Further, it adds a fix for the devcontainer tests. Devcontainer and bin
packages used in the devcontainer tests are now served from a local
temporary web server.
The change also adds the qemu_update test and provides the respective
update payload.
Lastly, the tests now use a local torcx_manifest.json produced by
ci.yaml, which points to a torcx tarball also served by the local
temporary web server.
This change removes "docker commit" at the end of each step and instead
makes build steps re-use the build container, saving some build time.
It also makes artifact upload more granular, so build logs, images, and
dev container can be downloaded individually.
Lastly, it exports torcx tarball and binary packages as a separate
artifact each, for successive re-use in the kola tests.
The curl call to download the current version.txt file failed, causing
branch to be "flatcar-" which later lets the git checkout fail. This
was hidden somewhere in the logs of successful steps.
To directly stop execution, use saner settings for curl and bash.
For the GitHub CI we have to use --qemu-skip-mangle because the LXC
containers don't have access to loop devices. Running with
--qemu-skip-mangle means that the serial console does not get captured
completely because systemd and dracut messages are missing, and thus we
don't catch these errors in kola.
Make the skipping conditional and use it in Jenkins at least for the
nightlies and releases.
When the specified remote contains a same-named branch as origin,
the checkout fails with "fatal: 'X' matched multiple (Y) remote
tracking branches".
Add the remote name as prefix to make the reference unambiguous.
While we moved the arm64 tests to lxc containers, amd64 stayed on VMs
which were not easy to scale up.
Now the GitHub Action runner is running on lxc containers and we can
spawn more VMs in parallel because it has no memory limit.
* arm64 tests now run in LXD containers instead of VMs
* parallelism increased for arm64
* some setup steps are skipped on arm64
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
* Adds a reusable workflow that can run tests
* Adapts the ci.yaml to use reusable workflow
* Creates a new workflow that helps trigger tests using an arbitrary
workflow run.
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
this initial attempt runs right after the "packages" jobs and downloads
the resulting artifacts.
The QEMU image is unzipped then the kola test is running using the
ci-automation scripts.
Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
This change will prompt the CI workflow to cancel a currently running
job, if a new push is sent in a PR. This should prevent duplicate jobs
running for the same PR simultaneously.
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Building for the branch push event causes two builds per PR and is not
needed anyway (we have nightly builds for the main branch).
Only consider PR events to trigger the CI build.
The SDK container does not exist for arm64 and is quite heavy. We
currently also resort to a unconditional rebuilding of mantle inside
the SDK.
Use the new mantle container image to run kola tests, and pin its
version through a text file that gets updated by GitHub Actions.