### 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'
+ - 'bin/tests/system/custom-test-driver'
+
+.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
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:
- find doc/man/ -maxdepth 1 -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:
- autoreconf -fi
black:
<<: *precheck_job
+ <<: *python_triggering_rules
needs: []
script:
- black $(git ls-files '*.py')
vulture:
<<: *precheck_job
+ <<: *python_triggering_rules
needs: []
script:
- vulture --exclude "*/ans*/ans.py,conftest.py,get_algorithms.py,isctest" --ignore-names "pytestmark" bin/tests/system/
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
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
pylint:
<<: *precheck_job
+ <<: *python_triggering_rules
needs: []
variables:
PYTHONPATH: "${CI_PROJECT_DIR}/bin/tests/system"
shfmt:
<<: *precheck_job
+ <<: *shell_triggering_rules
needs: []
script:
- shfmt -w -i 2 -ci -bn . $(find . -name "*.sh.in")
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
script:
- mypy "bin/tests/system/isctest/"
respdiff:
<<: *respdiff_job
- <<: *default_triggering_rules
<<: *base_image
variables:
CC: gcc
respdiff:asan:
<<: *respdiff_job
- <<: *default_triggering_rules
<<: *base_image
variables:
CC: gcc
respdiff:tsan:
<<: *respdiff_job
- <<: *default_triggering_rules
<<: *tsan_debian_trixie_amd64_image
variables:
CC: "${CLANG}"
respdiff-third-party:
<<: *respdiff_job
- <<: *default_triggering_rules
<<: *base_image
variables:
CC: gcc
.respdiff-recent-named: &respdiff_recent_named
<<: *respdiff_job
<<: *base_image
- <<: *default_triggering_rules
needs:
- job: ci-variables
artifacts: true
variables:
SHOTGUN_SCENARIO: dot
SHOTGUN_TRAFFIC_MULTIPLIER: 4
- 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
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
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