Commit Pragmas

Commit Pragmas are read from the current (which I suppose could also be called most recent) commit.  Pragmas in any prior commit messages are ignored.

in some cases where distro is specified and the distribution is CentOS 7 distro may be "el7" whereas in some other cases it may be "centos7". There are some TODOs noted in the table below that seem to have a goal to align on a single string for this distribution. Similarly, "ubuntu" below may actually require "ubuntu20". Refer to the latest daos master branch Jenkinsfile for additional hints.

Here are some additional commit pragmas that you might find useful:

Pragma

Explanation

Pragma

Explanation

Skip-checkpatch: true

Skips the checkpatch stage for the PR.

Run-GHA: true

Run Functional testing in GitHub Actions instead of Jenkins. This is optional for anyone who can see Jenkins results but given that external contributors cannot access our Jenkins instance, using this pragma will give them test results they can view in GHA instead of Jenkins.

Quick-build: true 

Speeds up the build by:

  • skipping all Pre-build stage steps

  • skipping build on all platforms other than EL7 and Leap-15

  • using RPMs for the DAOS components during the non-RPM build stages, instead of building them all from source

Note: This option is deprecated and may no longer work, do not use.

Note: as this commit pragma skips Pre-build steps, PRs using this pragma will not be able to land.

Note: This does not actually speed up the build process either.

See also Quick-Functional: true  below.

Parallel-build: true

Speeds up the build by running compile in parallel.

Quick-Functional: true

Skips all stages except build and Functional testing. This is a good way to iterate on CI code changes, or a change that is verified by (a) functional test(s).

Note: To speed up functional test code change testing it is recommended to use the Skip-unit-tests: true pragma instead to ensure all linting checks are performed on the modified code.

Skip-build: true

Skips building of the PR.

This is useful in conjunction with RPM-test-version but probably only useful for testing CI workflow changes as it does no DAOS build and packaging at all from the PR.

Skip-build-<distro>-<compiler>[-<buildtype>]: true


Skip building a specific distro and compiler combination.

Distros used currently are centos7 , leap15 , ubuntu .

Compilers used currently are gcc , clang , icc .

Buildtype is currently debug  or release .

Skip-build-<distro>-rpm: true

Skip building a package on a distribution.

Distros used currently are centos7 , leap15 , ubuntu20 .

Skip-test: true 

Skips all of the Test and Test Hardware stages. Note that the UT stages still runs. See Skip-unit-tests: for skipping that stage.

Skip-unit-tests: true

Skips all of the Unit Tests stages.

Skip-nlt: true

Skip the node local test stage.

Skip-unit-test: true

Skips the Unit Test on <distro> stage.

Skip-unit-test-memcheck: true

Skips running Unit Test with memcheck on <distro> stage.

Skip-coverity-test: true

Skips the Coverity instrumented build.

Skip-func-test: true 

Skips all Functional Test stages.

Skip-func-test-vm: true

Skips all the Functional VM test stages (el7, leap15)   TODO: rename this to Skip-func-vm-test  (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-test-<distro>: true

Skips the Functional VM test for the distro (el7, leap15)  TODO: rename this to Skip-func-vm-test-el7, Skip-func-vm-test-el8  or Skip-func-test-leap15  (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-test-vm-valgrind: false

Unskips the VM Functional on EL 8 with Valgrind stage

Skip-func-hw-test: true

Skips all the Test Hardware stages (Functional Hardware {Medium*|Large}) (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-hw-test-medium: true

Skips the Functional Hardware Medium test stage (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-hw-test-medium-verbs-provider: true

Skips the Functional Hardware Medium Verbs Provider test stage (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-hw-test-medium-ucx-provider: true

Skips the Functional Hardware Medium UCX Provider test stage (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-hw-test-large: true

Skips the Functional Hardware Large test stage (not needed if you use Test-tag: -- see the explanation in the Test-tag: pragma below).

Skip-func-hw-test-medium-md-on-ssd: false

Unskips the Functional Hardware Medium MD on SSD test stage.

Skip-func-hw-test-large-md-on-ssd: false

Unskips the Functional Hardware Large MD on SSD test stage.

skip-scan-rpms: rpms

Skip the malware scans of RPMs.

Skip-scan-<distro>-rpms: true

Skip the malware scan of the RPMs for a distro. Some distro examples: leap15, el7, el8.

Skip-test-centos-rpms: true

Skip the basic sanity test of the CentOS 7 RPMs.

Skip-fault-injection-test: true

Skip the Fault injection testing stage.

PR-repos: project@PR-number[:build_num]

Adds the artefact repository of Jenkins build of project 's lastSuccessfulBuild or build_num to the repository list for the build/test run. project is replaced with the name of the repository underneath https://github.com/daos-stack . Some project examples: mpich, hdf5, testmpio, romio, ior-hpc, MACSio, hdf5-vol-daos. When using multiple projects, the specified list of repos must be space-separated.

PR-repos-<distro>: project@PR-number[:build_num]

Same as above but only uses such PRs as repos for the named distribution.  Useful when your the PR you want to use as a repo does not build on all distributions. Some distro examples: leap15, el7, el8, ubuntu20.

RPM-test: true/false 

Whether Functional tests should be done with RPMs.  Defaults to true but can be set to false to force testing of the non-RPM build.

RPM-test-version: version-release 

The version-release of the RPMs to test with.  This is useful with PR-repos: daos@branch[:build_num]  to test with the RPMs from Nexus, or a different repo or build.

Doc-only: true/false

To force the "documentation only" handling (skipping build and test) state for a PR.  This should usually be determined automatically.

Skip-python-bandit: true

Skip the Python Bandit check.

Skip-bullseye: false

Enable the Bullseye instrumented testing.   Current default is not to run the Bullseye stages.

faults-enabled:  false

Uses scons BUILD_TYPE=release and will disable the fault injection framework from the build.  (Note the initial f  on this tag is lower-case)

Test-tag:

rollup of the Test-tag-* tags.  Description of Test Tags.

Test-tag-vm: pr

Controls which test tags to run in all of the Functional VM test stages only. In this example, it will run pr tagged tests in this stage.

Test-tag-hw-medium: pr

Controls which test tags to run in the Functional Hardware Medium test stage only. In this example, it will run pr tagged tests in this stage.

Test-tag-hw-medium-verbs-provider: pr

Controls which test tags to run in the Functional Hardware Medium Verbs Provider test stage only. In this example, it will run pr tagged tests in this stage.

Test-tag-hw-medium-ucx-provider: pr

Controls which test tags to run in the Functional Hardware Medium UCX Provider test stage only. In this example, it will run pr tagged tests in this stage.

Test-tag-hw-large: pr

Controls which test tags to run in the Functional Hardware Large test stage only. In this example, it will run pr tagged tests in this stage.

Skip-PR-comments: true

(experimental) Still e-mail about stage failures in the PR, but don't add a comment to GitHub about it.  Helps keep PRs clean of noise.

Features:

A space separated list of features your PR is affecting, to add tests covering those features to your PR. List of current Feature tags.

Note: When using "Features" tag, the following tags will be appended to your avocado filter (for each feature in your list): daily_regression,<your feature> full_regression,<your feature> .

Test-repeat: 1

Repeat running all selected tests in each Functional Test stage for the specified number of times.  Use with Test-tag: only (and not Test-tag-* or Features – see Test-repeat-* below for use with Test-tag-hw-* and Features).  Makes use of the launch.py --repeat=N option. 

This can be combined with the other Test-repeat-* pragmas, where any stage specific repeat count will supersede this repeat count for the indicated functional test stage.

Note: The Test-repeat* pragmas should be used with reduced set of test tags or skipped Functional Test stages to prevent excessive CI run times.

Test-repeat-vm: 1

Repeat running all selected tests in all of the Functional VM test stage for the specified number of times.  Use with Test-tag, Test-tag-vm, or Features.

Test-repeat-hw-medium: 1

Repeat running all selected tests in the Functional Hardware Medium test stage for the specified number of times.  Use with Test-tag, Test-tag-hw-medium, or Features.

Test-repeat-hw-medium-verbs-provider: 1

Repeat running all selected tests in the Functional Hardware Medium Verbs Provider test stage for the specified number of times.  Use with Test-tag, Test-tag-hw-medium, or Features.

Test-repeat-hw-medium-ucx-provider: 1

Repeat running all selected tests in the Functional Hardware Medium UCX Provider test stage for the specified number of times.  Use with Test-tag, Test-tag-hw-medium, or Features.

Test-repeat-hw-large: 1

Repeat running all selected tests in the Functional HW Large Test stage for the specified number of times.  Use with Test-tag, Test-tag-hw-large, or Features.

Func-hw-test-distro: centos7

The distribution to run hardware tests on.  Distros used currently are centos7 , centos8, el8leap15 , ubuntu20.

Allow-unstable-test: true

Allow tests to continue to HW stage if any tests fail in Functional stage

Test-provider: ucx+dc_x

Override the default provider to be used with all functional tests by using the value to specify the launch.py --provider argument. By default launch.py auto-detects the provider supported by the hosts being used in the stage.  Typically this means VM stages run with ofi+tcp and most HW stages run with ofi+verbs.

Test-provider-vm: ofi+tcp

Override the default provider to be used with all Functional VM test stages. See Test-provider: ucx+dc_x for more details.

Test-provider-hw-medium: ucx+dc_x

Override the default provider to be used with the Functional Hardware Medium test stage. See Test-provider: ucx+dc_x for more details.

Test-provider-hw-large: ucx+dc_x

Override the default provider to be used with the Functional HW Large test stage. See Test-provider: ucx+dc_x for more details.

Test-nvme: auto

Override the launch.py --nvme auto argument. For example: auto, auto_md_on_ssd, auto_nvme, auto_vmd.

Skip-list[-branch]: <test-tag>:<ticket #>

Specify a test tag (could be a specific test name) that should be skipped on testing as it’s a known failing test. This MUST include the ticket number or it will be flagged as an error and the job will fail. Branch could be i.e. master, release/2.4, etc.

Fixes: <ticket-number>[ <ticket-number>…]

Specify additional tickets that a PR fixes. Can either be space separates on a single Fixes: line or multiple Fixes: lines may be used.

An example of when to use these would be for documentation-only PRs, you should add:

Skip-build: true Skip-test: true

To avoid wasting time and resources running a build and test when they are not needed.

You could also use combinations of Quick-build: trueTest-tag*: to only run tests your patch is making changes to while you iterate towards your final patch.

A more effective way to achieve the above, while iterating is to use Quick-Functional: true  and Test-tag: <tag(s)> .

But note that your final run, before you request landing must include pr,hw  and pr,-hw  for the non-hardware and hardware test tags (respectively) if you want to add any additional tests to your landing run.  If your patch includes changes to tests that don't already have the pr tag on them, you should add your changed tests' tags to the respective test-tag pragma to ensure that all changed tests are being run in the testing on the PR.