deploy.yml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. .deploy_job_template:
  2. stage: deploy
  3. image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
  4. tags:
  5. - deploy
  6. .clang_tidy_deploy_template:
  7. extends: .deploy_job_template
  8. tags:
  9. - deploy
  10. - shiny
  11. script:
  12. - add_doc_server_ssh_keys $DOCS_DEPLOY_KEY $DOCS_SERVER $DOCS_SERVER_USER
  13. - export GIT_VER=$(git describe --always)
  14. - cd $IDF_PATH/examples/get-started/hello_world/tidybuild
  15. - mv report $GIT_VER
  16. - tar czvf $GIT_VER.tar.gz $GIT_VER
  17. - export STATIC_REPORT_PATH="web/static_analysis/esp-idf/"
  18. - ssh $DOCS_SERVER -x "mkdir -p $STATIC_REPORT_PATH/clang-tidy"
  19. - scp $GIT_VER.tar.gz $DOCS_SERVER:$STATIC_REPORT_PATH/clang-tidy
  20. - ssh $DOCS_SERVER -x "cd $STATIC_REPORT_PATH/clang-tidy && tar xzvf $GIT_VER.tar.gz && rm -f latest && ln -s $GIT_VER latest"
  21. # add link to view the report
  22. - echo "[static analysis][clang tidy] $CI_DOCKER_REGISTRY/static_analysis/esp-idf/clang-tidy/${GIT_VER}/index.html"
  23. - test ! -e ${GIT_VER}/FAILED_RULES || { echo 'Failed static analysis rules!'; cat ${GIT_VER}/FAILED_RULES; exit 1; }
  24. clang_tidy_deploy:
  25. extends: .clang_tidy_deploy_template
  26. # Override default stage to happen before the post_check
  27. stage: test_deploy
  28. needs:
  29. - clang_tidy_check
  30. - clang_tidy_check_all
  31. variables:
  32. BOT_NEEDS_TRIGGER_BY_NAME: 1
  33. clang_tidy_deploy_regular:
  34. extends:
  35. - .clang_tidy_deploy_template
  36. - .rules:labels:static_analysis-only
  37. needs:
  38. - clang_tidy_check_regular
  39. push_to_github:
  40. extends:
  41. - .deploy_job_template
  42. - .before_script_lesser
  43. - .rules:protected-no_label
  44. dependencies: []
  45. script:
  46. - add_github_ssh_keys
  47. - git remote remove github &>/dev/null || true
  48. - git remote add github git@github.com:espressif/esp-idf.git
  49. - tools/ci/push_to_github.sh
  50. .deploy_docs_template:
  51. extends:
  52. - .deploy_job_template
  53. - .before_script_lesser
  54. image: $ESP_IDF_DOC_ENV_IMAGE
  55. tags:
  56. - deploy
  57. - shiny
  58. variables:
  59. DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/"
  60. PYTHONUNBUFFERED: 1
  61. script:
  62. - add_doc_server_ssh_keys $DOCS_DEPLOY_PRIVATEKEY $DOCS_DEPLOY_SERVER $DOCS_DEPLOY_SERVER_USER
  63. - export GIT_VER=$(git describe --always)
  64. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ${IDF_PATH}/tools/ci/deploy_docs.py
  65. # deploys docs to CI_DOCKER_REGISTRY webserver, for internal review
  66. deploy_docs_preview:
  67. extends:
  68. - .deploy_docs_template
  69. - .rules:labels:build_docs-preview
  70. # Override default stage to happen before the post_check
  71. stage: test_deploy
  72. needs:
  73. - build_docs_html
  74. - build_docs_pdf
  75. variables:
  76. TYPE: "preview"
  77. # older branches use DOCS_DEPLOY_KEY, DOCS_SERVER, DOCS_SERVER_USER, DOCS_PATH for preview server so we keep these names for 'preview'
  78. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_DEPLOY_KEY"
  79. DOCS_DEPLOY_SERVER: "$DOCS_SERVER"
  80. DOCS_DEPLOY_SERVER_USER: "$DOCS_SERVER_USER"
  81. DOCS_DEPLOY_PATH: "$DOCS_PATH"
  82. DOCS_DEPLOY_URL_BASE: "https://$CI_DOCKER_REGISTRY/docs/esp-idf"
  83. # deploy docs to production webserver
  84. deploy_docs_production:
  85. # The DOCS_PROD_* variables used by this job are "Protected" so these branches must all be marked "Protected" in Gitlab settings
  86. extends:
  87. - .deploy_docs_template
  88. - .rules:protected-no_label
  89. stage: post_deploy
  90. needs: # ensure runs after push_to_github succeeded
  91. - build_docs_html
  92. - build_docs_pdf
  93. - push_to_github
  94. variables:
  95. TYPE: "preview"
  96. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PROD_DEPLOY_KEY"
  97. DOCS_DEPLOY_SERVER: "$DOCS_PROD_SERVER"
  98. DOCS_DEPLOY_SERVER_USER: "$DOCS_PROD_SERVER_USER"
  99. DOCS_DEPLOY_PATH: "$DOCS_PROD_PATH"
  100. DOCS_DEPLOY_URL_BASE: "https://docs.espressif.com/projects/esp-idf"
  101. deploy_test_result:
  102. extends:
  103. - .deploy_job_template
  104. - .before_script_slim
  105. - .rules:ref:master-schedule-always
  106. image: $CI_DOCKER_REGISTRY/bot-env
  107. tags:
  108. - deploy_test
  109. artifacts:
  110. when: always
  111. paths:
  112. - ${CI_PROJECT_DIR}/test-management/*.log
  113. # save all test logs as artifacts, make it easier to track errors
  114. - ${CI_PROJECT_DIR}/TEST_LOGS
  115. - $CI_PROJECT_DIR/$CI_COMMIT_SHA
  116. expire_in: 1 mos
  117. variables:
  118. UNIT_TEST_CASE_FILE: "${CI_PROJECT_DIR}/components/idf_test/unit_test/TestCaseAll.yml"
  119. BOT_ACCOUNT_CONFIG_FILE: "${CI_PROJECT_DIR}/test-management/Config/Account.local.yml"
  120. TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
  121. AUTO_TEST_SCRIPT_PATH: "${CI_PROJECT_DIR}/auto_test_script"
  122. script:
  123. - add_gitlab_ssh_keys
  124. - export GIT_SHA=$(echo ${CI_COMMIT_SHA} | cut -c 1-8)
  125. - export REV_COUNT=$(git rev-list --count HEAD)
  126. - export SUMMARY="IDF CI test result for $GIT_SHA (r${REV_COUNT})"
  127. # artifacts of job update_test_cases creates test-management folder
  128. # we need to remove it so we can clone test-management folder again
  129. - rm -rf test-management
  130. - retry_failed git clone $TEST_MANAGEMENT_REPO
  131. - python3 $CHECKOUT_REF_SCRIPT test-management test-management
  132. - cd test-management
  133. - echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
  134. # update test results
  135. - python3 ImportTestResult.py -r "$GIT_SHA (r${REV_COUNT})" -j $JIRA_TEST_MANAGEMENT_PROJECT -s "$SUMMARY" -l CI -p ${CI_PROJECT_DIR}/TEST_LOGS ${CI_PROJECT_DIR}/${CI_COMMIT_SHA} --pipeline_url ${CI_PIPELINE_URL}