ci: move integration-test to ci/actions

This commit is contained in:
Chen Yudong
2026-05-11 17:33:18 +08:00
parent a681415af6
commit ed7e69d9e9
4 changed files with 18 additions and 75 deletions
+3 -1
View File
@@ -18,6 +18,9 @@ workflow:
# Place the default settings in `.gitlab/ci/common.yml` instead # Place the default settings in `.gitlab/ci/common.yml` instead
include: include:
- project: "ci/actions/common"
file:
- "templates/idf/integration-test.yml"
- '.gitlab/ci/common.yml' - '.gitlab/ci/common.yml'
- '.gitlab/ci/rules.yml' - '.gitlab/ci/rules.yml'
- '.gitlab/ci/upload_cache.yml' - '.gitlab/ci/upload_cache.yml'
@@ -25,7 +28,6 @@ include:
- '.gitlab/ci/static-code-analysis.yml' - '.gitlab/ci/static-code-analysis.yml'
- '.gitlab/ci/pre_check.yml' - '.gitlab/ci/pre_check.yml'
- '.gitlab/ci/build.yml' - '.gitlab/ci/build.yml'
- '.gitlab/ci/integration_test.yml'
- '.gitlab/ci/host-test.yml' - '.gitlab/ci/host-test.yml'
- '.gitlab/ci/target-test.yml' - '.gitlab/ci/target-test.yml'
- '.gitlab/ci/deploy.yml' - '.gitlab/ci/deploy.yml'
-69
View File
@@ -1,69 +0,0 @@
# 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:
- assign_test
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
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
+14 -4
View File
@@ -1,18 +1,21 @@
#!/usr/bin/env python #!/usr/bin/env python
# #
# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD # SPDX-FileCopyrightText: 2021-2026 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
""" """
Check if all rules in rules.yml used or not in CI yaml files. Check if all rules in rules.yml used or not in CI yaml files.
""" """
import argparse import argparse
import os import os
import re import re
import sys import sys
from copy import deepcopy from copy import deepcopy
from typing import Any, Dict, List, Optional, Set, Union from typing import Any
from typing import Dict
from typing import List
from typing import Optional
from typing import Set
from typing import Union
import yaml import yaml
from idf_ci_utils import IDF_PATH from idf_ci_utils import IDF_PATH
@@ -49,6 +52,13 @@ class YMLConfig:
all_config = dict() all_config = dict()
for item in self.root_yml['include']: for item in self.root_yml['include']:
if isinstance(item, dict):
if 'project' in item:
continue
elif 'local' in item:
item = item['local']
else:
continue
all_config.update(load_yaml(os.path.join(IDF_PATH, item))) all_config.update(load_yaml(os.path.join(IDF_PATH, item)))
self._config = all_config self._config = all_config
return self._config return self._config
+1 -1
View File
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD # SPDX-FileCopyrightText: 2020-2026 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
# internal use only for CI # internal use only for CI
# some CI related util functions # some CI related util functions