diff --git a/.cirrus.yml b/.cirrus.yml index d58e74d48c..9764ada9aa 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -640,11 +640,13 @@ local_integration_test_task: &local_integration_test_task # Docs: ./contrib/cirrus/CIModes.md only_if: *not_tag_branch_build_docs_machine # skip when: - it is a PR (we never want to skip on nightly tests); and + # - CI:ALL title is not set; and # - no danger files are changed; and # - when no int test code is changed; and # - NOT (source code is changed AND NOT only test files) skip: &skip_int_test >- $CIRRUS_PR != '' && + $CIRRUS_CHANGE_TITLE !=~ '.*CI:ALL.*' && !changesInclude('.cirrus.yml', 'Makefile', 'contrib/cirrus/**', 'vendor/**', 'hack/**', 'version/rawversion/*') && !changesInclude('test/e2e/**', 'test/utils/**') && !(changesInclude('**/*.go', '**/*.c') && !changesIncludeOnly('test/**', 'pkg/machine/e2e/**')) @@ -743,10 +745,12 @@ podman_machine_task: $CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*' ) || $CIRRUS_CRON == "main" # skip when: - it is a PR (we never want to skip on nightly tests); and + # - CI:ALL title is not set; and # - no danger files are changed; and # - no machine code files are changed skip: &skip_machine_test >- $CIRRUS_PR != '' && + $CIRRUS_CHANGE_TITLE !=~ '.*CI:ALL.*' && !changesInclude('.cirrus.yml', 'Makefile', 'contrib/cirrus/**', 'vendor/**', 'hack/**', 'version/rawversion/*') && !changesInclude('cmd/podman/machine/**', 'pkg/machine/**', '**/*machine*.go') depends_on: *build @@ -871,11 +875,13 @@ local_system_test_task: &local_system_test_task $CIRRUS_CHANGE_TITLE !=~ '.*CI:BUILD.*' && $CIRRUS_CHANGE_TITLE !=~ '.*CI:MACHINE.*' # skip when: - it is a PR (we never want to skip on nightly tests); and + # - CI:ALL title is not set; and # - no danger files are changed; and # - no system test code is changed; and # - NOT (source code is changed AND not only test files) skip: &skip_system_test >- $CIRRUS_PR != '' && + $CIRRUS_CHANGE_TITLE !=~ '.*CI:ALL.*' && !changesInclude('.cirrus.yml', 'Makefile', 'contrib/cirrus/**', 'vendor/**', 'hack/**', 'version/rawversion/*') && !changesInclude('test/system/**') && !(changesInclude('**/*.go', '**/*.c') && !changesIncludeOnly('test/**', 'pkg/machine/e2e/**')) @@ -1001,10 +1007,12 @@ buildah_bud_test_task: # Docs: ./contrib/cirrus/CIModes.md only_if: *not_tag_magic # skip when: - it is a PR (we never want to skip on nightly tests); and + # - CI:ALL title is not set; and # - no danger files are changed; and # - no build source files are changed and no bud tests skip: >- $CIRRUS_PR != '' && + $CIRRUS_CHANGE_TITLE !=~ '.*CI:ALL.*' && !changesInclude('.cirrus.yml', 'Makefile', 'contrib/cirrus/**', 'vendor/**', 'hack/**', 'version/rawversion/*') && !changesInclude('**/*build*.go', 'test/buildah-bud/**') depends_on: *build diff --git a/contrib/cirrus/CIModes.md b/contrib/cirrus/CIModes.md index 409334ab73..0156de4695 100644 --- a/contrib/cirrus/CIModes.md +++ b/contrib/cirrus/CIModes.md @@ -126,6 +126,10 @@ is removed. commit-change before Cirrus-CI will notice the draft-status update (i.e. pressing the re-run button **is not** good enough). +### Intended `[CI:ALL]` behavior: + +Run even the tasks that are skipped based on changed sources conditions otherwise. + ### Intended Branch tasks (and Cirrus-cron jobs): + *build* + swagger diff --git a/contrib/cirrus/cirrus_yaml_test.py b/contrib/cirrus/cirrus_yaml_test.py index 5ab43ce5d9..cf62097e4f 100755 --- a/contrib/cirrus/cirrus_yaml_test.py +++ b/contrib/cirrus/cirrus_yaml_test.py @@ -62,7 +62,7 @@ class TestDependsOn(TestCaseBase): def test_skips(self): """2024-06 PR#23030: ugly but necessary duplication in skip conditions. Prevent typos or unwanted changes.""" - beginning = "$CIRRUS_PR != '' && !changesInclude('.cirrus.yml', 'Makefile', 'contrib/cirrus/**', 'vendor/**', 'hack/**', 'version/rawversion/*') && " + beginning = "$CIRRUS_PR != '' && $CIRRUS_CHANGE_TITLE !=~ '.*CI:ALL.*' && !changesInclude('.cirrus.yml', 'Makefile', 'contrib/cirrus/**', 'vendor/**', 'hack/**', 'version/rawversion/*') && " real_source_changes = " && !(changesInclude('**/*.go', '**/*.c') && !changesIncludeOnly('test/**', 'pkg/machine/e2e/**'))" for task_name in self.ALL_TASK_NAMES: