Commit Graph
76 Commits
Author SHA1 Message Date
Gleb Chesnokov 49b4d9f3ef scripts: Group release and packaging helpers under release/
Keep RPM artifact creation, archive generation, package release preparation
and version updates in one directory. Switch all component archive targets,
the top-level RPM target and the RPM workflow to the relocated helpers.

Point archive generation at the shared source inventory in source/ while
preserving its caller-directory semantics and the existing package inputs.
2026-10-19 10:31:32 +03:00
Gleb Chesnokov 43e717c7f1 scripts: Group kernel maintenance helpers under kernel/
Move patch generation, specialization, regression, kernel selection and
module signing helpers together, with their shared shell libraries. Update
component Makefiles, CI, nightly jobs, packaging metadata, documentation
and KUnit tooling references alongside the move.

Adjust repository-root and source-inventory lookups for the deeper path.
Resolve rhel-rpm-functions relative to kernel-functions through
BASH_SOURCE, since it is also sourced by the QLogic extraction helpers.

Keep the regression runner behavior and the nightly kernel matrix intact,
including the existing checkpatch, sparse and smatch switches and policy.
2026-10-19 10:31:32 +03:00
wenlxieandGleb Chesnokov 35bde5f339 .github/workflows: Fail the checkpatch download on HTTP errors
The checkpatch workflows fetch checkpatch.pl, spelling.txt and
const_structs.checkpatch with a plain curl. When raw.githubusercontent.com
rate-limits the runner, curl saves the HTTP 429 error page as
checkpatch.pl and exits successfully. The next step then runs that page
as a script, so every commit fails with

  ./checkpatch.pl: line 1: 429:: command not found

which looks like a checkpatch failure of the pull request.

Pass -f so that an HTTP error fails the download step, and --retry 5 so
that transient errors, including HTTP 429, are retried first. Also use
-sSL to keep the log quiet and follow redirects.
2026-10-17 08:03:39 +03:00
Gleb Chesnokov 3d4f88273b tests: Add named CI selections for Ginkgo
Keep CI selection policy in shared ci-pr and ci-push label sets. Resolve
them to ordinary Ginkgo expressions for local discovery and execution,
and before booting CI guests so report validation still checks the exact
filter. Preserve ordinary expressions and the full manual selection.

Mark both ACG teardown scenarios as race and exclude that category from
master push runs. Keep their strict overlap, recovery and cleanup checks
unchanged. PR runs retain basic/smoke coverage through ci-pr.

Document the named selections and check their filtering behavior and
propagation through the VM supervisor.
2026-10-16 23:41:25 +03:00
Gleb Chesnokov 21567d8ce6 .github/workflows: Limit RPM builds and cancel outdated PR runs
Build RPM packages only on pushes to master and remove the manual package
workflow trigger. Keep DEB checks on pull requests and retain the rolling
master publication with its current-head checks and release serialization.

Cancel outdated runs of the same pull request within each CI workflow.
Give other events a separate group per run so master package builds and
publication are not interrupted by newer pushes. Keep the full regression
matrix and all build and test steps unchanged.
2026-10-15 20:00:26 +03:00
Gleb Chesnokov 555826aaa5 .github/workflows: Run KUnit and Ginkgo in disposable VMs
Build kernel-matched images on GitHub-hosted runners and execute tests
under an external QEMU supervisor. Run KUnit and Ginkgo in independent
jobs that each build and test SCST. Keep guest images local to each job
and upload build logs and test reports.

Capture serial logs outside the guests, require complete matching
reports, and bound guest execution independently of kernel health.
Exercise guest panic and timeout handling before KUnit. Give Ginkgo an
isolated iSCSI peer and disposable block storage.

Print native test output and summaries in the job log. On failure, include
supervisor errors, kernel diagnostics and bounded serial tails while
retaining complete artifacts and the original test command exit status.

Select basic management and smoke SCSI/I/O tests on both transports for
pull requests. Run every Ginkgo spec after pushes to master and on manual
runs. Pass the label filter into the guest and require both transport
reports to confirm the requested selection.
2026-10-15 20:00:26 +03:00
Gleb Chesnokov d89f53368b kunit: Add full test builds and label-based execution
Provide kunit-build for all test-owning modules and their dependencies,
kunit-run for existing artifacts, and kunit-test for a sequential build
and run even under make -j. Allow root builds and run every command with
the caller's privileges. Require root for module execution.

Map KUNIT_TEST and KUNIT_LOG to private Kbuild switches. Default
KUNIT_LABEL to ALL and use KUNIT_ARGS for other runner options and
module paths. Resolve artifacts from explicit arguments, configuration
or the recorded build, preserving spaces. Group and align the Makefile
help for component tests, KUnit and ordinary build targets.

Read label-to-suite mappings and dependency order from module metadata,
without a separate Python owner registry. Reject dependency cycles and
missing SCST core artifacts. Load external kernel dependencies with
modprobe before preparing KUnit; keep shared system
modules loaded. Load only selected SCST owners and their dependencies
from the supplied build and trigger suites through native KUnit debugfs.

Support built-in and modular KUnit with autorun disabled. Load modular
KUnit with known parameters when absent and release it after SCST
cleanup or a clean initial load failure. Reuse an existing instance only
after validating its effective parameters in sysfs; reject invalid or
unreadable values without changing the module. Never unload preloaded
KUnit. Check global filters before loading SCST.

Capture fresh kernel records and parse suites with the upstream KTAP
parser. Preserve logs and skip reasons, associating first-parameter
diagnostics with their case without changing plans or results. Stop
module operations on incomplete evidence, diagnostics or retained
fixtures. Continue after ordinary assertion failures. Finish capturing
output after command exit. Distinguish suites not started from missing
results, and count each Oops as one event. Print concise errors and
colored terminal statuses as suites finish. Group failure details after
progress. Normalize each assertion block independently of printk
messages while retaining value indentation. Follow with explicit stop
reasons and a compact SCST build summary. Reserve module headings,
author, license, source checksums, vermagic and other modules for
verbose output. Keep full case logs, module metadata and kernel
diagnostics in plain-text and JSON reports.

Cover build ordering, selection, kernel setup, dependency preparation,
runner lifecycle and reporting with mocked operations. Document VM
setup, build, execution and extension in the KUnit guide.

Add kunit-clean for test-owning component builds. Invalidate the recorded
module list and clear tooling caches on ordinary and component clean
paths too, including failed cleanup. Preserve reports and user settings.

Check all tooling, kunit-build and cleanup in one CI job. Pin the
Fedora container by digest and fetch a fixed kernel-devel package from
Koji with a SHA-256 check, independently of the regression matrix.
Save build evidence without building a kernel or loading modules.
2026-10-14 15:08:03 +03:00
Gleb Chesnokov c3070172c7 kunit: Add a shared test switch and a core library suite
Integrate optional native KUnit suites with out-of-tree SCST modules.
A single CONFIG_SCST_KUNIT_TEST switch includes all test objects of
each owner. Declare each suite name and label once and discover source
registrations for kunit-list without a build or loaded modules.
Preserve ordinary builds without KUnit.

Start with a fixed-wire LUN regression. Centralize private visibility
and task-scoped static-stub switches, and define retained-fixture
reporting for asynchronous tests. Use current native KUnit APIs
without compatibility shims. Keep optional execution messages behind
CONFIG_SCST_KUNIT_LOG while leaving failure diagnostics unconditional.

Add Makefile/Kbuild regression checks and document the shared switch.

Keep compatibility builds free of KUnit, including inherited test
options and allmodconfig. Generate ordinary in-tree SCST patches with
private declarations but without test suites or KUnit build options.
Check this boundary and preserve kernels without an unwinder option.
2026-10-14 15:08:03 +03:00
Gleb Chesnokov 3c7a6df0a8 .github/workflows: Trust Ubuntu package checkout
Mark the mounted GitHub workspace as a safe Git directory inside Ubuntu
package containers.

This keeps tracked source enumeration and version metadata available to
make dpkg.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov 726f91559c .github/workflows: Skip disabled regression analyzers
Do not install sparse or build smatch in jobs that disable both.

Check for each tool only when the corresponding analysis is enabled.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov 06857c81cb .github/workflows: Build Ubuntu 20.04 packages
Build Ubuntu 20.04 and 24.04 DEB artifacts in release-specific job
containers with explicit kernel headers.

Publish one bundle per Ubuntu LTS target and keep the README independent of
matrix versions.
2026-08-25 14:24:22 +03:00
Gleb Chesnokov f5d133af6e .github/workflows: Drop redundant GCC build
Keep the standalone CI matrix focused on Clang. GCC is already
exercised by Ubuntu DEB and RPM package builds with WERROR enabled.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 5f9d79a099 .github/workflows: Avoid duplicate branch builds
Run CI and package builds for pull requests and for pushes to master.
Avoid running both event types for each same-repository PR update.

Keep manual package workflow runs available.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov d29a7fe26e .github/workflows: Configure warnings-as-errors policy
Enable WERROR=y for CI and package builds so warnings in SCST code
are fatal.

Keep WERROR=n for regression and Coverity because these workflows
must tolerate failures outside strict SCST package gates.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov fb47ab3ef1 .github/workflows: Publish master package snapshot
Publish a rolling prerelease after the complete master package
matrix succeeds. Validate and bundle every downloaded artifact before
replacing the previous master-rpm snapshot.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 88476ff915 .github/workflows: Build package matrix
Build the six RPM targets resolved from ABT_KERNELS and portable
Ubuntu DKMS and user-space packages. Upload commit-specific GitHub Actions
artifacts for every target.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov be6734bf3d .github/workflows: Generate regression kernel matrix
Generate the existing 53-kernel GitHub regression subset from
ABT_KERNELS instead of duplicating exact versions in the workflow.
2026-08-25 12:10:06 +03:00
Gleb Chesnokov 98f5f06076 nightly build: Update kernel versions
Another kernel versions update
2026-08-17 21:43:33 +03:00
Gleb Chesnokov aa9d52a6f1 nightly build: Update kernel versions
Another kernel versions update
2026-06-16 18:01:21 +03:00
Gleb Chesnokov 4ec53813b1 scst: Unbreak the RHEL 9.8 and RHEL 10.2 builds
Fixes: https://github.com/SCST-project/scst/issues/369
Fixes: https://github.com/SCST-project/scst/issues/355
2026-05-28 15:49:14 +03:00
Gleb Chesnokov 181af5c698 nightly build: Add Rocky linux kernels 2026-05-26 18:27:32 +03:00
Gleb Chesnokov a266c02db5 nightly build: Update kernel versions
Another kernel versions update
2026-04-14 17:17:39 +03:00
Gleb Chesnokov b97f62a869 nightly build: Update kernel versions
Another kernel versions update
2026-04-12 18:37:09 +03:00
Gleb Chesnokov 7d6f9a1f74 .github/workflows: Drop envelope_from from mail action
The current action branch fails with "No recipients defined" when
envelope_from is set in this workflow. The SMTP username already
provides the sender address, so envelope_from is unnecessary here.
2026-03-12 16:17:24 +03:00
Gleb Chesnokov 32c4c6b87b .github/workflows: Use valid sender address
Set a static From header and envelope_from to the configured
SMTP account to restore mail notifications.
2026-03-12 15:00:49 +03:00
Gleb Chesnokov e36e246b22 .github/workflows: Switch actions to default branches
Update the Coverity and mail notification workflows to use the
current default branches of the corresponding GitHub Actions.
2026-03-12 14:27:39 +03:00
Gleb Chesnokov 15d25e24a5 nightly build: Update kernel versions
Another kernel versions update
2026-02-12 10:55:58 +03:00
Gleb Chesnokov 1b48521653 nightly build: Update kernel versions 2025-12-29 12:40:21 +03:00
Gleb Chesnokov b2250f6ead nightly build: Update kernel versions
Another kernel versions update
2025-12-09 13:32:41 +03:00
Gleb Chesnokov 3fb16aa624 scst: Unbreak the RHEL 10.1 build
Fixes: https://github.com/SCST-project/scst/issues/317
2025-12-09 11:53:38 +03:00
Gleb Chesnokov 7d0b1d2588 scst: Unbreak the RHEL 9.7 build
Fixes: https://github.com/SCST-project/scst/issues/317
2025-11-19 11:38:42 +03:00
Gleb Chesnokov fae9d2a1e5 scst: Unbreak UEK and RHEL builds
Drop OL6/UEK R4 support.
2025-10-01 22:11:28 +03:00
Gleb Chesnokov 5245d1cb15 .github/workflows: Print compilation output and improve annotations
Show the kernel compilation output whenever the run reached the
compilation stage (both pass/fail cases) and add a readable prefix
with the actual filename. Also refactor to use variables for version,
workdir, and output; quote expansions; and switch to titled GitHub
Actions annotations. Drop `-k` and rely on explicit cleanup.
2025-10-01 22:11:28 +03:00
Gleb Chesnokov 8180623310 nightly build: Update kernel versions
Another kernel versions update
2025-09-30 12:13:22 +03:00
Gleb Chesnokov 1186ac25c5 nightly build: Update kernel versions
Another kernel versions update
2025-08-05 17:41:32 +03:00
Gleb Chesnokov 17eb80e049 nightly build: Add RHEL 10 kernel support
Add AlmaLinux 10.0 kernel to nightly build configs and update helper
scripts to handle AlmaLinux 10.0 package sources.
2025-06-06 12:31:21 +03:00
Gleb Chesnokov 15ebdec403 nightly build: Add UEK 8 kernel support
Add Oracle Linux UEK 8 kernel to nightly build configs and update helper
scripts to handle UEK 8 package sources.
2025-05-26 17:37:09 +03:00
Gleb Chesnokov 44bd290fea scst: Add RHEL 8.10 and 9.6 kernel support
Add compatibility for RHEL 8.10 and RHEL 9.6 kernels. Update nightly build
and regression test configs, and adjust version checks in the codebase
to handle changes in these new RHEL kernel releases.
2025-05-26 17:37:09 +03:00
Gleb Chesnokov 15695fedce nightly build: Update kernel versions
Another kernel versions update
2025-05-26 17:37:09 +03:00
Gleb Chesnokov fdbb34c77e .github/workflows: Improve regression test failure detection in GitHub Actions
Update the run_regression_tests workflow to fail if "Compiling the patched
kernel" is missing or if any non-zero error count ("N errors") or "FAILED"
is detected after the marker.

The previous check missed multi-digit error counts and did not handle
a missing marker, which could result in undetected failures.
2025-05-26 17:37:09 +03:00
Gleb Chesnokov 12a00ffc89 nightly build: Update kernel versions
Another kernel versions update
2025-03-25 18:57:32 +03:00
Gleb Chesnokov 3e3c2e6930 nightly build: Update kernel versions
Another kernel versions update
2025-01-20 18:54:10 +03:00
Gleb Chesnokov ddd7f084c8 .github/workflows: Update stable branch version 2024-12-28 17:14:54 +03:00
Gleb Chesnokov 9082b4e82a nightly build: Update kernel versions
Another kernel versions update
2024-12-28 14:59:04 +03:00
Gleb Chesnokov cc713322e7 nightly build: Update kernel versions
Another kernel versions update.
2024-11-18 17:13:45 +03:00
Gleb Chesnokov 31eca7eced .github/workflows: Use checkpatch scripts
Inroduce several checkpatch scripts to use in workflows.
2024-11-07 13:21:25 +03:00
Gleb Chesnokov fca4d58822 .github/workflows: Run regression tests upon a pull request
Also allow regression tests to run upon a pull request.
2024-11-07 13:21:25 +03:00
Gleb Chesnokov 1925094cb0 .github/workflows, scripts: Improve checkpatch compliance
Use checkpatch --strict to detect more style issues.
2024-10-01 16:17:11 +03:00
Gleb Chesnokov 878bbad8ce nightly build: Update kernel versions
Another kernel versions update
2024-09-16 13:44:01 +03:00
Gleb Chesnokov 376838e898 scripts/run-regression-tests: Improve support for RHEL kernels
Additionally, update kernel versions.
2024-09-04 20:12:26 +03:00