diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 10e523704b..3c64fcbbd2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -96,6 +96,9 @@ variables: # This is used only if CI_PYTHON_TOOL_REPO is not empty. CI_PYTHON_TOOL_BRANCH: "" + # Set this variable to specify the file name for the known failure cases. + KNOWN_FAILURE_CASES_FILE_NAME: "5.0.txt" + IDF_CI_BUILD: 1 cache: diff --git a/.gitlab/ci/target-test.yml b/.gitlab/ci/target-test.yml index 534992e861..73957a0400 100644 --- a/.gitlab/ci/target-test.yml +++ b/.gitlab/ci/target-test.yml @@ -24,7 +24,7 @@ junit: XUNIT_RESULT.xml expire_in: 1 week script: - - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases + - python tools/ci/get_known_failure_cases_file.py # get runner env config file - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs @@ -32,7 +32,7 @@ # Runner tags are comma separated, replace the comma with " and " for markers - job_tags=$(python tools/ci/python_packages/gitlab_api.py get_job_tags $CI_PROJECT_ID --job_id $CI_JOB_ID) - markers=$(echo $job_tags | sed -e "s/,/ and /g") - - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --known-failure-cases-file known_failure_cases/known_failure_cases.txt + - run_cmd pytest $TEST_DIR -m \"${markers}\" --junitxml=XUNIT_RESULT.xml --known-failure-cases-file ${KNOWN_FAILURE_CASES_FILE_NAME} .pytest_examples_dir_template: extends: .pytest_template @@ -550,10 +550,10 @@ test_app_test_pytest_esp32s3_mspi_f4r4: - retry_failed git clone $TEST_ENV_CONFIG_REPO - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs ci-test-runner-configs # git clone the known failure cases repo, run test - - retry_failed git clone $KNOWN_FAILURE_CASES_REPO known_failure_cases + - python tools/ci/get_known_failure_cases_file.py # run test - cd tools/ci/python_packages/tiny_test_fw/bin - - run_cmd python Runner.py $TEST_CASE_PATH -c $CONFIG_FILE -e $ENV_FILE --known_failure_cases_file $CI_PROJECT_DIR/known_failure_cases/known_failure_cases.txt + - run_cmd python Runner.py $TEST_CASE_PATH -c $CONFIG_FILE -e $ENV_FILE --known_failure_cases_file $CI_PROJECT_DIR/${KNOWN_FAILURE_CASES_FILE_NAME} .example_test_template: extends: .target_test_job_template diff --git a/tools/ci/exclude_check_tools_files.txt b/tools/ci/exclude_check_tools_files.txt index f28943b7e5..2616da029a 100644 --- a/tools/ci/exclude_check_tools_files.txt +++ b/tools/ci/exclude_check_tools_files.txt @@ -37,4 +37,5 @@ tools/mocks/**/* tools/set-submodules-to-github.sh tools/templates/sample_component/CMakeLists.txt tools/templates/sample_component/include/main.h +tools/ci/get_known_failure_cases_file.py tools/templates/sample_component/main.c diff --git a/tools/ci/get_known_failure_cases_file.py b/tools/ci/get_known_failure_cases_file.py new file mode 100644 index 0000000000..056ec2c51d --- /dev/null +++ b/tools/ci/get_known_failure_cases_file.py @@ -0,0 +1,37 @@ +# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 + +import os + +import urllib3 +from minio import Minio + + +def getenv(env_var: str) -> str: + try: + return os.environ[env_var] + except KeyError as e: + raise Exception(f'Environment variable {env_var} not set') from e + + +def get_minio_client() -> Minio: + return Minio( + getenv('IDF_S3_SERVER').replace('https://', ''), + access_key=getenv('IDF_S3_ACCESS_KEY'), + secret_key=getenv('IDF_S3_SECRET_KEY'), + http_client=urllib3.PoolManager( + num_pools=10, + timeout=urllib3.Timeout.DEFAULT_TIMEOUT, + retries=urllib3.Retry( + total=5, + backoff_factor=0.2, + status_forcelist=[500, 502, 503, 504], + ), + ), + ) + + +if __name__ == '__main__': + client = get_minio_client() + file_name = getenv('KNOWN_FAILURE_CASES_FILE_NAME') + client.fget_object('ignore-test-result-files', file_name, file_name) diff --git a/tools/requirements/requirements.ci.txt b/tools/requirements/requirements.ci.txt index 0d4c00f282..78be5eb398 100644 --- a/tools/requirements/requirements.ci.txt +++ b/tools/requirements/requirements.ci.txt @@ -8,3 +8,4 @@ jsonschema junit_xml python-gitlab pyyaml +minio