# generate dynamic integration pipeline by `idf-integration-ci` project .patterns-integration_test: &patterns-integration_test # add all possible patterns to make sure `gen_integration_pipeline` can be triggered. # fine-grained control will be done while generating the pipeline # find `patterns` in `idf-integration-ci` project - "components/**/*" - "tools/**/*" - ".gitlab-ci.yml" - ".gitlab/ci/common.yml" - ".gitlab/ci/integration_test.yml" - ".gitmodules" - "CMakeLists.txt" - "install.sh" - "export.sh" - "Kconfig" - "sdkconfig.rename" # Simplify the rules .integration_test_rules: rules: - if: '$CI_PIPELINE_SOURCE != "merge_request_event"' - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' changes: *patterns-integration_test # support trigger by ci labels - if: '$CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*target_test(?:,[^,\n\r]+)*$/i' - if: '$CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*integration_test(?:,[^,\n\r]+)*$/i' - if: '$CI_MERGE_REQUEST_LABELS =~ /^(?:[^,\n\r]+,)*build(?:,[^,\n\r]+)*$/i' gen_integration_pipeline: extends: - .before_script:minimal - .integration_test_rules image: ${CI_INTEGRATION_ASSIGN_ENV} stage: assign_test cache: [] tags: [fast_run, shiny] variables: SUBMODULES_TO_FETCH: "none" GIT_LFS_SKIP_SMUDGE: 1 needs: - job: fast_template_app artifacts: false optional: true artifacts: paths: - idf-integration-ci/child_pipeline/ expire_in: 2 weeks when: always script: - add_gitlab_ssh_keys - retry_failed git clone ${CI_GEN_INTEGRATION_PIPELINE_REPO} idf-integration-ci - python $CHECKOUT_REF_SCRIPT idf-integration-ci idf-integration-ci - cd idf-integration-ci - python tools/generate_child_pipeline.py -o child_pipeline/ child_integration_test_pipeline: extends: - .integration_test_rules stage: assign_test needs: - gen_integration_pipeline trigger: include: - artifact: idf-integration-ci/child_pipeline/pipeline.yml job: gen_integration_pipeline forward: yaml_variables: false strategy: depend