|
|
4 lat temu | |
|---|---|---|
| .. | ||
| dependencies | 4 lat temu | |
| README.md | 4 lat temu | |
| assign-test.yml | 4 lat temu | |
| build.yml | 4 lat temu | |
| deploy.yml | 4 lat temu | |
| docs.yml | 4 lat temu | |
| host-test.yml | 4 lat temu | |
| pre_check.yml | 4 lat temu | |
| rules.yml | 4 lat temu | |
| static-code-analysis.yml | 4 lat temu | |
| target-test.yml | 4 lat temu | |
detached pipeline without pushing new commits?rules.yml?Job?Rules Template?if Anchor?tools/ci/utils.shdetached pipeline will be created.If you found a job that is not running as expected with some file changes, a git commit to improve the pattern will be appreciated.
target-test jobs, please use it as few as possible. Our final goal is to remove all the labels and let the file changes decide everything!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 labelsdetached pipeline without pushing new commits?Go to MR web page -> Pipelines tab -> click Run pipeline button.
In very rare case, this tab will not show up because no merge_request pipeline is created before. Please use web API then.
curl -X POST --header "PRIVATE-TOKEN: [YOUR PERSONAL ACCESS TOKEN]" [GITLAB_SERVER]/api/v4/projects/103/merge_requests/[MERGE_REQUEST_IID]/pipelines
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: 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 (DEPRECATED) or included in the MR labels. For example:
.if-label-build_docs: &if-label-build_docs
if: '$BOT_LABEL_BUILD_DOCS || $CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build_docs(?:,[^,\n\r]+)*$/i'
rule: A combination of various patterns, and labels. 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_docs
- <<: *if-label-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