|
|
5 年 前 | |
|---|---|---|
| .. | ||
| dependencies | 5 年 前 | |
| README.md | 5 年 前 | |
| assign-test.yml | 5 年 前 | |
| build.yml | 5 年 前 | |
| deploy.yml | 5 年 前 | |
| docs.yml | 5 年 前 | |
| host-test.yml | 5 年 前 | |
| pre_check.yml | 5 年 前 | |
| rules.yml | 5 年 前 | |
| static-code-analysis.yml | 5 年 前 | |
| target-test.yml | 5 年 前 | |
detached pipeline without pushing new commits?rules.yml?Job?Rules Template?if Anchor?tools/ci/utils.shdetached pipeline will be created.Details:
WIP: or Draft:, push commit will NOT trigger a merge-request pipelinetest ci:, pushing a commit will trigger a merge-request pipeline even when the MR title starts with WIP: or Draft:.WIP: or Draft:, push commit will NOT trigger a pipelineIf you found a job that is not running as expected with some file changes, a git commit to improve the pattern will be appreciated.
buildbuild_docscomponent_ut[_esp32/esp32s2/...]custom_test[_esp32/esp32s2/...]dockerdocsexample_test[_esp32/esp32s2/...]fuzzer_testhost_testintegration_testiperf_stress_testmacosmacos_testnvs_coveragesubmoduleunit_test[_esp32/esp32s2/...]weekend_testwindowsThere are two general labels (not recommended since these two labels will trigger a lot of jobs)
target_test: includes all target for example_test, custom_test, component_ut, unit_test, integration_testall_test: includes all test labelsWe have two ways to run additional jobs
labelsAdd these labels in the commit message (not the first line). For example:
ci: detect file changes to assign jobs
test labels: example_test_esp32, custom_test_esp32
The additional test labels line should start with test label(s): and the labels should be separated by space or comma.
detached pipeline without pushing new commits?Go to MR web page -> Pipelines tab -> click Run pipeline button
rules.yml?pattern: Defined in an array. A GitLab job will be created if the changed files in this MR matched one of the patterns. For example:
.patterns-python-files: &patterns-python-files
- "**/*.py"
label: (deprecated). Defined in an if clause, similar as the previous bot command. A GitLab job will be created if the pipeline variables contains variables in BOT_LABEL_xxx format. For example:
.if-label-build_docs: &if-label-build_docs
if: '$BOT_LABEL_BUILD_DOCS'
title: Defined in an if clause. A GitLab job will be created if this title included in the MR labels or in the commit message title. For example:
.if-title-docs: &if-title-docs
if: '$CI_MERGE_REQUEST_LABELS =~ /^(?:\w+,)*docs(?:,\w+)*$/i || $CI_COMMIT_TITLE =~ /\((?:\w+\s+)*docs(?:\s+\w+)*\)$/i'
rule: A combination of various patterns, labels, and titles. It will be used by GitLab YAML extends keyword to tell GitLab in what conditions will this job be created. For example:
.rules:build:docs:
rules:
- <<: *if-protected
- <<: *if-label-build
- <<: *if-title-build
- <<: *if-label-build_docs
- <<: *if-title-build_docs
- <<: *if-label-docs
- <<: *if-title-docs
- <<: *if-dev-push
changes: *patterns-docs
An example for GitLab job on how to use extends:
```yaml
check_docs_lang_sync:
extends:
- .pre_check_job_template
- .rules:build:docs
script:
- cd docs
- ./check_lang_folder_sync.sh
```
Job?check if there's a suitable .rules:<rules-you-need> template
extends. All done, now you can close this window. (extends could be array or string)Rules Template?, create a suitable oneRules Template?check if this rule is related to labels, patterns
check if there's a suitable .if-<if-anchor-you-need> anchor
if there is, create a rule following rules Template Naming Rules.For detail information, please refer to GitLab Documentation rules-if. Here's an example.
.rules:dev:
rules:
- <<: *if-trigger
- <<: *if-dev-push
if there isn't
if Anchor?, create a suitable oneif Anchor?Create an if anchor following if Anchors Naming Rules. For detailed information about how to write the condition clause, please refer to GitLab Documentation `only/except (advanced). Here's an example.
.if-schedule: &if-schedule:
if: '$CI_PIPELINE_SOURCE == "schedule"'
if a phrase has multi words, use _ to concatenate them.
e.g.
regular_test
if a name has multi phrases, use - to concatenate them.
e.g.
regular_test-example_test
if Anchors Naming Rules.if-label-<label_name>.if-ref-<ref_name>.if-branch-<branch_name>.if-tag-<tag_name>.if-ref-<release_name>-branch-<branch_name>Common Phrases/Abbreviations
- `no_label`
`$BOT_TRIGGER_WITH_LABEL == null`
- `protected`
`($CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_BRANCH =~ /^release\/v/ || $CI_COMMIT_TAG =~ /^v\d+\.\d+(\.\d+)?($|-)/)`
- `target_test`
a combination of `example_test`, `custom_test`, `unit_test`, `component_ut`, `integration_test` and all targets
rules Template Naming Rules.rules:tag:<tag_1>-<tag_2>.rules:labels:<label_1>-<label_2>.rules:test:<test_type>.rules:build:<build_type>.rules:patterns:<patterns>tools/ci/utils.shIt is used to put all the reusable shell scripts as small functions. If you want to set before_script: [] for you job, now you can set extends: .before_script_slim instead. it will only run source tools/ci/utils.sh
If you're developing CI shell scripts, you can use these functions without source them. They're already included in all before_script
To run these commands in shell script locally, place source tools/ci/utils.sh at the very beginning.
add_gitlab_ssh_keysadd_github_ssh_keysadd_doc_server_ssh_keysfetch_submodulesget_all_submoduleserror: log in red colorwarning: log in orange colorinfo: log in green colorrun_cmd: run the command with duration seconds inforetry_failed: run the command with duration seconds info, retry when failed