mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-10 22:39:58 -04:00
Only run relevant CI jobs based on the changes
Trigger selected CI jobs on MR automatically only if there are related code changes. Otherwise, offer an option to run the jobs manually in MRs. For other sources, like schedules, tags etc., execute the jobs as usual.
This commit is contained in:
parent
2d690499dd
commit
02c58d9baa
1 changed files with 116 additions and 16 deletions
132
.gitlab-ci.yml
132
.gitlab-ci.yml
|
|
@ -273,19 +273,73 @@ stages:
|
|||
|
||||
### Job Templates
|
||||
|
||||
.rule_mr_code: &rule_mr_code
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.c'
|
||||
- '**/*.h'
|
||||
- '**/meson.build'
|
||||
|
||||
.rule_mr_shell: &rule_mr_shell
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.sh'
|
||||
- '**/*.sh.in'
|
||||
- 'bin/tests/system/org.isc.bind.system'
|
||||
|
||||
.rule_mr_python: &rule_mr_python
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.py'
|
||||
|
||||
.rule_mr_manual: &rule_mr_manual
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
when: manual # only run on MR if requested
|
||||
allow_failure: true # don't block the pipeline or the pipeline result
|
||||
|
||||
.rule_tag: &rule_tag
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
|
||||
.rule_source_other_than_mr: &rule_source_other_than_mr
|
||||
- if: '$CI_PIPELINE_SOURCE =~ /^(api|pipeline|schedule|trigger|web)$/'
|
||||
|
||||
.rule_source_all: &rule_source_all
|
||||
- if: '$CI_PIPELINE_SOURCE =~ /^(api|merge_request_event|pipeline|schedule|trigger|web)$/'
|
||||
|
||||
.api-pipelines-schedules-tags-triggers-web-triggering-rules: &api_pipelines_schedules_tags_triggers_web_triggering_rules
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE =~ /^(api|pipeline|schedule|trigger|web)$/'
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
|
||||
.default-triggering-rules_list: &default_triggering_rules_list
|
||||
- if: '$CI_PIPELINE_SOURCE =~ /^(api|merge_request_event|pipeline|schedule|trigger|web)$/'
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
- *rule_tag
|
||||
- *rule_source_all
|
||||
|
||||
.default-triggering-rules: &default_triggering_rules
|
||||
rules:
|
||||
- *default_triggering_rules_list
|
||||
|
||||
.code-triggering-rules: &code_triggering_rules
|
||||
rules:
|
||||
- *rule_mr_code
|
||||
- *rule_mr_manual
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
|
||||
.shell-triggering-rules: &shell_triggering_rules
|
||||
rules:
|
||||
- *rule_mr_shell
|
||||
- *rule_mr_manual
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
|
||||
.python-triggering-rules: &python_triggering_rules
|
||||
rules:
|
||||
- *rule_mr_python
|
||||
- *rule_mr_manual
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
|
||||
.precheck: &precheck_job
|
||||
<<: *default_triggering_rules
|
||||
<<: *base_image
|
||||
|
|
@ -400,8 +454,17 @@ stages:
|
|||
stage: performance
|
||||
rules:
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.c'
|
||||
- '**/*.h'
|
||||
variables:
|
||||
BASELINE: '$CI_MERGE_REQUEST_DIFF_BASE_SHA'
|
||||
- &shotgun_rule_mr_manual
|
||||
if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
variables:
|
||||
BASELINE: '$CI_MERGE_REQUEST_DIFF_BASE_SHA'
|
||||
when: manual # don't run on each MR unless requested
|
||||
allow_failure: true
|
||||
- &shotgun_rule_tag
|
||||
if: '$CI_COMMIT_TAG != null'
|
||||
variables:
|
||||
|
|
@ -521,6 +584,7 @@ stages:
|
|||
- find build/man/ -maxdepth 2 -name "*.[0-9]" -exec mandoc -T lint "{}" \; | ( ! grep -v -e "skipping paragraph macro. sp after" -e "unknown font, skipping request. ft C" -e "input text line longer than 80 bytes" )
|
||||
|
||||
.respdiff: &respdiff_job
|
||||
<<: *code_triggering_rules
|
||||
stage: system
|
||||
before_script:
|
||||
- *configure
|
||||
|
|
@ -561,6 +625,7 @@ misc:
|
|||
|
||||
black:
|
||||
<<: *precheck_job
|
||||
<<: *python_triggering_rules
|
||||
needs: []
|
||||
script:
|
||||
- black $(git ls-files '*.py')
|
||||
|
|
@ -574,6 +639,7 @@ black:
|
|||
|
||||
vulture:
|
||||
<<: *precheck_job
|
||||
<<: *python_triggering_rules
|
||||
needs: []
|
||||
script:
|
||||
- vulture --exclude "*ans.py,conftest.py,isctest" --ignore-names "pytestmark,reconfigure_policy,setup_filters" bin/tests/system/
|
||||
|
|
@ -603,6 +669,16 @@ ci-orphaned-anchors:
|
|||
|
||||
clang-format:
|
||||
<<: *precheck_job
|
||||
rules:
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.c'
|
||||
- '**/*.h'
|
||||
- '**/.clang-format'
|
||||
- '**/.clang-format.headers'
|
||||
- *rule_mr_manual
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
needs: []
|
||||
script:
|
||||
- if [ -r .clang-format ]; then "${CLANG_FORMAT}" -i -style=file $(git ls-files '*.c' '*.h'); fi
|
||||
|
|
@ -616,6 +692,15 @@ clang-format:
|
|||
|
||||
coccinelle:
|
||||
<<: *precheck_job
|
||||
rules:
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.c'
|
||||
- '**/*.h'
|
||||
- 'cocci/**'
|
||||
- *rule_mr_manual
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
needs: []
|
||||
script:
|
||||
- util/check-cocci.sh
|
||||
|
|
@ -623,6 +708,13 @@ coccinelle:
|
|||
|
||||
meson-format:
|
||||
<<: *precheck_job
|
||||
rules:
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/meson.build'
|
||||
- *rule_mr_manual
|
||||
- *rule_tag
|
||||
- *rule_source_other_than_mr
|
||||
needs: []
|
||||
script:
|
||||
- git ls-files "*meson.build" | xargs muon-meson fmt -i
|
||||
|
|
@ -651,6 +743,7 @@ doctest:
|
|||
|
||||
pylint:
|
||||
<<: *precheck_job
|
||||
<<: *python_triggering_rules
|
||||
needs: []
|
||||
variables:
|
||||
PYTHONPATH: "${CI_PROJECT_DIR}/bin/tests/system"
|
||||
|
|
@ -670,6 +763,7 @@ reuse:
|
|||
|
||||
shfmt:
|
||||
<<: *precheck_job
|
||||
<<: *shell_triggering_rules
|
||||
needs: []
|
||||
script:
|
||||
- shfmt -w -i 2 -ci -bn . $(find . -name "*.sh.in")
|
||||
|
|
@ -692,12 +786,14 @@ danger:
|
|||
|
||||
checkbashisms:
|
||||
<<: *precheck_job
|
||||
<<: *shell_triggering_rules
|
||||
needs: []
|
||||
script:
|
||||
- checkbashisms $(find . -path './.git' -prune -o -type f -exec sh -c 'head -n 1 "{}" | grep -qsF "#!/bin/sh"' \; -print)
|
||||
|
||||
mypy:
|
||||
<<: *precheck_job
|
||||
<<: *python_triggering_rules
|
||||
stage: precheck
|
||||
script:
|
||||
- mypy "bin/tests/system/isctest/"
|
||||
|
|
@ -1677,7 +1773,6 @@ coverity:
|
|||
|
||||
respdiff:
|
||||
<<: *respdiff_job
|
||||
<<: *default_triggering_rules
|
||||
<<: *base_image
|
||||
variables:
|
||||
CC: gcc
|
||||
|
|
@ -1690,7 +1785,6 @@ respdiff:
|
|||
|
||||
respdiff:asan:
|
||||
<<: *respdiff_job
|
||||
<<: *default_triggering_rules
|
||||
<<: *base_image
|
||||
variables:
|
||||
CC: gcc
|
||||
|
|
@ -1703,7 +1797,6 @@ respdiff:asan:
|
|||
|
||||
respdiff:tsan:
|
||||
<<: *respdiff_job
|
||||
<<: *default_triggering_rules
|
||||
<<: *tsan_debian_trixie_amd64_image
|
||||
variables:
|
||||
CC: "${CLANG}"
|
||||
|
|
@ -1720,7 +1813,6 @@ respdiff:tsan:
|
|||
|
||||
respdiff-third-party:
|
||||
<<: *respdiff_job
|
||||
<<: *default_triggering_rules
|
||||
<<: *base_image
|
||||
variables:
|
||||
CC: gcc
|
||||
|
|
@ -1734,7 +1826,6 @@ respdiff-third-party:
|
|||
.respdiff-recent-named: &respdiff_recent_named
|
||||
<<: *respdiff_job
|
||||
<<: *base_image
|
||||
<<: *default_triggering_rules
|
||||
needs:
|
||||
- job: ci-variables
|
||||
artifacts: true
|
||||
|
|
@ -1777,12 +1868,8 @@ shotgun:dot:
|
|||
variables:
|
||||
SHOTGUN_SCENARIO: dot
|
||||
SHOTGUN_TRAFFIC_MULTIPLIER: 5
|
||||
rules: &shotgun_rules_manual_mr
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
variables:
|
||||
BASELINE: '$CI_MERGE_REQUEST_DIFF_BASE_SHA'
|
||||
when: manual # don't run on each MR unless requested
|
||||
allow_failure: true
|
||||
rules:
|
||||
- *shotgun_rule_mr_manual
|
||||
- *shotgun_rule_tag
|
||||
- *shotgun_rule_other
|
||||
|
||||
|
|
@ -1792,7 +1879,10 @@ shotgun:doh-get:
|
|||
SHOTGUN_SCENARIO: doh-get
|
||||
SHOTGUN_TRAFFIC_MULTIPLIER: 2
|
||||
SHOTGUN_EVAL_THRESHOLD_LATENCY_PCTL_MAX: 0.4 # bump from the default due to increased tail-end jitter
|
||||
rules: *shotgun_rules_manual_mr
|
||||
rules:
|
||||
- *shotgun_rule_mr_manual
|
||||
- *shotgun_rule_tag
|
||||
- *shotgun_rule_other
|
||||
|
||||
generate-stress-test-configs:
|
||||
<<: *base_image
|
||||
|
|
@ -1809,6 +1899,16 @@ generate-stress-test-configs:
|
|||
stress-test-child-pipeline:
|
||||
<<: *default_triggering_rules
|
||||
stage: performance
|
||||
rules:
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
changes:
|
||||
- '**/*.c'
|
||||
- '**/*.h'
|
||||
- if: '$CI_MERGE_REQUEST_DIFF_BASE_SHA != null'
|
||||
when: manual # don't run on each MR unless requested
|
||||
allow_failure: true
|
||||
- if: '$CI_COMMIT_TAG != null'
|
||||
- if: '$CI_PIPELINE_SOURCE =~ /^(api|pipeline|schedule|trigger|web)$/'
|
||||
trigger:
|
||||
include:
|
||||
- artifact: stress-test-configs.yml
|
||||
|
|
|
|||
Loading…
Reference in a new issue