mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
CI: add expire_in and timeout for jobs
add timeout 4 hours and retry for deploy_test_result add missing expire_in for artifacts add timeout 1 hour for tartget test jobs add retry when job_execution_timeout
This commit is contained in:
parent
5810ed1d04
commit
de7e67ccec
@ -171,8 +171,11 @@ before_script:
|
|||||||
default:
|
default:
|
||||||
retry:
|
retry:
|
||||||
max: 2
|
max: 2
|
||||||
# In case of a runner failure we could hop to another one, or a network error could go away.
|
when:
|
||||||
when: runner_system_failure
|
# In case of a runner failure we could hop to another one, or a network error could go away.
|
||||||
|
- runner_system_failure
|
||||||
|
# Job execution timeout may be caused by a network issue.
|
||||||
|
- job_execution_timeout
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- '.gitlab/ci/rules.yml'
|
- '.gitlab/ci/rules.yml'
|
||||||
|
@ -88,6 +88,7 @@ assign_integration_test:
|
|||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- $TEST_DIR/test_configs
|
- $TEST_DIR/test_configs
|
||||||
|
expire_in: 1 week
|
||||||
variables:
|
variables:
|
||||||
TEST_DIR: ${CI_PROJECT_DIR}/tools/ci/integration_test
|
TEST_DIR: ${CI_PROJECT_DIR}/tools/ci/integration_test
|
||||||
BUILD_DIR: ${CI_PROJECT_DIR}/SSC/ssc_bin
|
BUILD_DIR: ${CI_PROJECT_DIR}/SSC/ssc_bin
|
||||||
|
@ -117,6 +117,7 @@ build_non_test_components_apps:
|
|||||||
- log_template_app/*
|
- log_template_app/*
|
||||||
- size_info.txt
|
- size_info.txt
|
||||||
- build_template_app/**/size.json
|
- build_template_app/**/size.json
|
||||||
|
expire_in: 1 week
|
||||||
script:
|
script:
|
||||||
# Set the variable for 'esp-idf-template' testing
|
# Set the variable for 'esp-idf-template' testing
|
||||||
- ESP_IDF_TEMPLATE_GIT=${ESP_IDF_TEMPLATE_GIT:-"https://github.com/espressif/esp-idf-template.git"}
|
- ESP_IDF_TEMPLATE_GIT=${ESP_IDF_TEMPLATE_GIT:-"https://github.com/espressif/esp-idf-template.git"}
|
||||||
|
@ -75,3 +75,6 @@ deploy_test_result:
|
|||||||
- echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
|
- echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
|
||||||
# update test results
|
# update test results
|
||||||
- python3 ImportTestResult.py -r "$GIT_SHA (r${REV_COUNT})" -j $JIRA_TEST_MANAGEMENT_PROJECT -s "$SUMMARY" -l CI -p ${CI_PROJECT_DIR}/TEST_LOGS --pipeline_url ${CI_PIPELINE_URL}
|
- python3 ImportTestResult.py -r "$GIT_SHA (r${REV_COUNT})" -j $JIRA_TEST_MANAGEMENT_PROJECT -s "$SUMMARY" -l CI -p ${CI_PROJECT_DIR}/TEST_LOGS --pipeline_url ${CI_PIPELINE_URL}
|
||||||
|
# May need a long time to upload all test results.
|
||||||
|
retry: 2
|
||||||
|
timeout: 4 hours
|
||||||
|
@ -152,6 +152,7 @@ scan_tests:
|
|||||||
- $EXAMPLE_TEST_OUTPUT_DIR
|
- $EXAMPLE_TEST_OUTPUT_DIR
|
||||||
- $TEST_APPS_OUTPUT_DIR
|
- $TEST_APPS_OUTPUT_DIR
|
||||||
- $COMPONENT_UT_OUTPUT_DIR
|
- $COMPONENT_UT_OUTPUT_DIR
|
||||||
|
expire_in: 1 week
|
||||||
variables:
|
variables:
|
||||||
EXAMPLE_TEST_DIR: ${CI_PROJECT_DIR}/examples
|
EXAMPLE_TEST_DIR: ${CI_PROJECT_DIR}/examples
|
||||||
EXAMPLE_TEST_OUTPUT_DIR: ${CI_PROJECT_DIR}/examples/test_configs
|
EXAMPLE_TEST_OUTPUT_DIR: ${CI_PROJECT_DIR}/examples/test_configs
|
||||||
|
@ -82,6 +82,7 @@ check_pylint:
|
|||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
- $REPORT_PATTERN
|
- $REPORT_PATTERN
|
||||||
|
expire_in: 1 week
|
||||||
tags:
|
tags:
|
||||||
- host_test
|
- host_test
|
||||||
dependencies: # Here is not a hard dependency relationship, could be skipped when only python files changed. so we do not use "needs" here.
|
dependencies: # Here is not a hard dependency relationship, could be skipped when only python files changed. so we do not use "needs" here.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
.pytest_template:
|
.pytest_template:
|
||||||
stage: target_test
|
stage: target_test
|
||||||
|
timeout: 1 hour
|
||||||
extends: .before_script_pytest
|
extends: .before_script_pytest
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
@ -8,6 +9,7 @@
|
|||||||
- /tmp/pytest-embedded/
|
- /tmp/pytest-embedded/
|
||||||
reports:
|
reports:
|
||||||
junit: XUNIT_RESULT.xml
|
junit: XUNIT_RESULT.xml
|
||||||
|
expire_in: 1 week
|
||||||
script:
|
script:
|
||||||
- pytest $TEST_DIR --target $TARGET -m $ENV_MARKER --junitxml=XUNIT_RESULT.xml
|
- pytest $TEST_DIR --target $TARGET -m $ENV_MARKER --junitxml=XUNIT_RESULT.xml
|
||||||
|
|
||||||
@ -173,6 +175,7 @@ component_ut_pytest_esp32c3_generic:
|
|||||||
|
|
||||||
.target_test_job_template:
|
.target_test_job_template:
|
||||||
stage: target_test
|
stage: target_test
|
||||||
|
timeout: 1 hour
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
@ -180,9 +183,9 @@ component_ut_pytest_esp32c3_generic:
|
|||||||
- $LOG_PATH
|
- $LOG_PATH
|
||||||
exclude:
|
exclude:
|
||||||
- .git/**/*
|
- .git/**/*
|
||||||
expire_in: 1 week
|
|
||||||
reports:
|
reports:
|
||||||
junit: $LOG_PATH/*/XUNIT_RESULT.xml
|
junit: $LOG_PATH/*/XUNIT_RESULT.xml
|
||||||
|
expire_in: 1 week
|
||||||
variables:
|
variables:
|
||||||
TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
|
TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
|
||||||
LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
|
LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
|
||||||
|
@ -7,36 +7,31 @@ import os
|
|||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
try:
|
|
||||||
from yaml import CLoader as Loader
|
|
||||||
except ImportError:
|
|
||||||
from yaml import Loader as Loader
|
|
||||||
|
|
||||||
IDF_PATH = os.getenv('IDF_PATH')
|
IDF_PATH = os.getenv('IDF_PATH')
|
||||||
if not IDF_PATH:
|
if not IDF_PATH:
|
||||||
print('Please set IDF_PATH before running this script')
|
print('Please set IDF_PATH before running this script')
|
||||||
raise SystemExit(-1)
|
raise SystemExit(-1)
|
||||||
|
|
||||||
GITLAB_CONFIG_FILE = os.path.join(os.getenv('IDF_PATH'), '.gitlab-ci.yml')
|
GITLAB_CONFIG_FILE = os.path.join(IDF_PATH, '.gitlab-ci.yml')
|
||||||
|
|
||||||
|
|
||||||
def check_artifacts_expire_time():
|
def check_artifacts_expire_time():
|
||||||
with open(GITLAB_CONFIG_FILE, 'r') as f:
|
with open(GITLAB_CONFIG_FILE, 'r') as f:
|
||||||
config = yaml.load(f, Loader=Loader)
|
config = yaml.load(f, Loader=yaml.FullLoader)
|
||||||
|
|
||||||
errors = []
|
# load files listed in `include`
|
||||||
|
if 'include' in config:
|
||||||
|
for _file in config['include']:
|
||||||
|
with open(os.path.join(IDF_PATH, _file)) as f:
|
||||||
|
config.update(yaml.load(f, Loader=yaml.FullLoader))
|
||||||
|
|
||||||
print('expire time for jobs:')
|
print('expire time for jobs:')
|
||||||
|
errors = []
|
||||||
|
|
||||||
job_names = list(config.keys())
|
job_names = list(config.keys())
|
||||||
job_names.sort()
|
job_names.sort()
|
||||||
|
|
||||||
for job_name in job_names:
|
for job_name in job_names:
|
||||||
|
|
||||||
if job_name.startswith('.'):
|
|
||||||
# skip ignored jobs
|
|
||||||
continue
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if 'expire_in' not in config[job_name]['artifacts']:
|
if 'expire_in' not in config[job_name]['artifacts']:
|
||||||
errors.append(job_name)
|
errors.append(job_name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user