assign-test.yml 4.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. assign_test:
  2. extends: .rules:test:any_test
  3. tags:
  4. - assign_test
  5. image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
  6. stage: assign_test
  7. # gitlab ci do not support match job with RegEx or wildcard now in dependencies.
  8. # we have a lot build example jobs. now we don't use dependencies, just download all artifacts of build stage.
  9. dependencies: # Here is not a hard dependency relationship, could be skipped. so we do not use "needs" here.
  10. - build_ssc_esp32
  11. - build_esp_idf_tests_cmake_esp32
  12. - build_esp_idf_tests_cmake_esp32s2
  13. - build_esp_idf_tests_cmake_esp32s3
  14. - build_esp_idf_tests_cmake_esp32c3
  15. variables:
  16. SUBMODULES_TO_FETCH: "components/esptool_py/esptool"
  17. EXAMPLE_TEST_DIR: "${CI_PROJECT_DIR}/examples"
  18. CUSTOM_TEST_DIR: "${CI_PROJECT_DIR}/tools/test_apps"
  19. UNIT_TEST_DIR: "${CI_PROJECT_DIR}/components/idf_test/unit_test"
  20. # COMPONENT_UT_DIRS is set by `set_component_ut_vars` in `utils.sh`
  21. COMPONENT_UT_OUTPUT_DIR: "${CI_PROJECT_DIR}/component_ut"
  22. INTEGRATION_CONFIG_OUTPUT_PATH: "${CI_PROJECT_DIR}/components/idf_test/integration_test/CIConfigs"
  23. INTEGRATION_TEST_CASE_PATH: "${CI_PROJECT_DIR}/auto_test_script/TestCaseFiles"
  24. ASSIGN_TEST_CASE_SCRIPT: "${CI_PROJECT_DIR}/auto_test_script/bin/CIAssignTestCases.py"
  25. PYTHONPATH: ${CI_PROJECT_DIR}/auto_test_script/packages
  26. # auto_test_script only supports python 3.7.x
  27. PYTHON_VER: 3.7.7
  28. artifacts:
  29. paths:
  30. - components/idf_test/*/CIConfigs
  31. - $EXAMPLE_TEST_DIR/test_configs
  32. - $CUSTOM_TEST_DIR/test_configs
  33. - $COMPONENT_UT_OUTPUT_DIR/test_configs
  34. - build_examples/artifact_index.json
  35. - build_test_apps/artifact_index.json
  36. - build_component_ut/artifact_index.json
  37. - tools/unit-test-app/builds/artifact_index.json
  38. expire_in: 1 week
  39. script:
  40. - set_component_ut_vars
  41. - python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py example_test $EXAMPLE_TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $EXAMPLE_TEST_DIR/test_configs
  42. - python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py custom_test $CUSTOM_TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $CUSTOM_TEST_DIR/test_configs
  43. - python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py component_ut $COMPONENT_UT_DIRS -c $CI_TARGET_TEST_CONFIG_FILE -o $COMPONENT_UT_OUTPUT_DIR/test_configs
  44. - python tools/ci/python_packages/ttfw_idf/IDFAssignTest.py unit_test $UNIT_TEST_DIR -c $CI_TARGET_TEST_CONFIG_FILE -o $UNIT_TEST_DIR/CIConfigs
  45. # clone test script to assign tests
  46. # can not retry if downing git lfs files failed, so using empty_branch first.
  47. - retry_failed git clone ${CI_AUTO_TEST_SCRIPT_REPO_URL} -b empty_branch
  48. - retry_failed git -C auto_test_script checkout -f ${CI_AUTO_TEST_SCRIPT_REPO_BRANCH}
  49. - python $CHECKOUT_REF_SCRIPT auto_test_script auto_test_script --customized_only
  50. # assign integration test cases
  51. - python ${ASSIGN_TEST_CASE_SCRIPT} -t ${INTEGRATION_TEST_CASE_PATH} -c $CI_TARGET_TEST_CONFIG_FILE -b $IDF_PATH/SSC/ssc_bin -o $INTEGRATION_CONFIG_OUTPUT_PATH
  52. update_test_cases:
  53. extends: .rules:ref:master-schedule
  54. stage: assign_test
  55. image: $CI_DOCKER_REGISTRY/ubuntu-test-env
  56. tags:
  57. - deploy_test
  58. needs:
  59. - build_esp_idf_tests_cmake_esp32
  60. - build_esp_idf_tests_cmake_esp32s2
  61. - build_esp_idf_tests_cmake_esp32s3
  62. - build_esp_idf_tests_cmake_esp32c3
  63. artifacts:
  64. when: always
  65. paths:
  66. - ${CI_PROJECT_DIR}/test-management/*.log
  67. expire_in: 1 week
  68. variables:
  69. SUBMODULES_TO_FETCH: "components/esptool_py/esptool"
  70. UNIT_TEST_DIR: "${CI_PROJECT_DIR}/components/idf_test/unit_test"
  71. BOT_ACCOUNT_CONFIG_FILE: "${CI_PROJECT_DIR}/test-management/Config/Account.local.yml"
  72. AUTO_TEST_SCRIPT_PATH: "${CI_PROJECT_DIR}/auto_test_script"
  73. PYTHON_VER: 3.7.7
  74. script:
  75. - export GIT_SHA=$(echo ${CI_COMMIT_SHA} | cut -c 1-8)
  76. - retry_failed git clone $TEST_MANAGEMENT_REPO
  77. - python $CHECKOUT_REF_SCRIPT test-management test-management
  78. - cd test-management
  79. - echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
  80. # update unit test cases
  81. - export UNIT_TEST_CASE_FILES=$(find $UNIT_TEST_DIR -maxdepth 1 -name "*.yml" | xargs)
  82. - python ImportTestCase.py $JIRA_TEST_MANAGEMENT_PROJECT unity -d $UNIT_TEST_CASE_FILES -r $GIT_SHA
  83. # update example test cases
  84. - python ImportTestCase.py $JIRA_TEST_MANAGEMENT_PROJECT tiny_test_fw -d ${CI_PROJECT_DIR}/examples -r $GIT_SHA
  85. - python ImportTestCase.py $JIRA_TEST_MANAGEMENT_PROJECT tiny_test_fw -d ${CI_PROJECT_DIR}/tools/test_apps -r $GIT_SHA
  86. # organize test cases
  87. - python OrganizeTestCases.py $JIRA_TEST_MANAGEMENT_PROJECT