deploy.yml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. .clang_tidy_deploy_template:
  2. stage: deploy
  3. image: $CI_DOCKER_REGISTRY/esp32-ci-env
  4. tags:
  5. - deploy
  6. - shiny
  7. script:
  8. - mkdir -p ~/.ssh
  9. - chmod 700 ~/.ssh
  10. - echo -n $DOCS_DEPLOY_KEY > ~/.ssh/id_rsa_base64
  11. - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
  12. - chmod 600 ~/.ssh/id_rsa
  13. - echo -e "Host $DOCS_SERVER\n\tStrictHostKeyChecking no\n\tUser $DOCS_SERVER_USER\n" >> ~/.ssh/config
  14. - export GIT_VER=$(git describe --always)
  15. - cd $IDF_PATH/examples/get-started/hello_world/tidybuild
  16. - mv report $GIT_VER
  17. - tar czvf $GIT_VER.tar.gz $GIT_VER
  18. - export STATIC_REPORT_PATH="web/static_analysis/esp-idf/"
  19. - ssh $DOCS_SERVER -x "mkdir -p $STATIC_REPORT_PATH/clang-tidy"
  20. - scp $GIT_VER.tar.gz $DOCS_SERVER:$STATIC_REPORT_PATH/clang-tidy
  21. - ssh $DOCS_SERVER -x "cd $STATIC_REPORT_PATH/clang-tidy && tar xzvf $GIT_VER.tar.gz && rm -f latest && ln -s $GIT_VER latest"
  22. # add link to view the report
  23. - echo "[static analysis][clang tidy] $CI_DOCKER_REGISTRY/static_analysis/esp-idf/clang-tidy/${GIT_VER}/index.html"
  24. - test ! -e ${GIT_VER}/FAILED_RULES || { echo 'Failed static analysis rules!'; cat ${GIT_VER}/FAILED_RULES; exit 1; }
  25. clang_tidy_deploy:
  26. extends: .clang_tidy_deploy_template
  27. # Override default stage to happen before the post_check
  28. stage: test_deploy
  29. dependencies:
  30. - clang_tidy_check
  31. - clang_tidy_check_all
  32. variables:
  33. BOT_NEEDS_TRIGGER_BY_NAME: 1
  34. clang_tidy_deploy_regular:
  35. extends: .clang_tidy_deploy_template
  36. dependencies:
  37. - clang_tidy_check_regular
  38. only:
  39. refs:
  40. - master
  41. - /^release\/v/
  42. - /^v\d+\.\d+(\.\d+)?($|-)/
  43. - triggers
  44. - schedules
  45. variables:
  46. - $BOT_LABEL_STATIC_ANALYSIS
  47. - $BOT_LABEL_STATIC_ANALYSIS_ALL
  48. push_to_github:
  49. stage: deploy
  50. image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
  51. tags:
  52. - deploy
  53. only:
  54. refs:
  55. - master
  56. - /^release\/v/
  57. - /^v\d+\.\d+(\.\d+)?($|-)/
  58. variables:
  59. - $BOT_TRIGGER_WITH_LABEL == null
  60. when: on_success
  61. dependencies: []
  62. extends: .before_script_lesser
  63. script:
  64. - mkdir -p ~/.ssh
  65. - chmod 700 ~/.ssh
  66. - echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64
  67. - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
  68. - chmod 600 ~/.ssh/id_rsa
  69. - echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
  70. - git remote remove github &>/dev/null || true
  71. - git remote add github git@github.com:espressif/esp-idf.git
  72. - tools/ci/push_to_github.sh
  73. .deploy_docs_template:
  74. extends: .before_script_lesser
  75. stage: deploy
  76. image: $ESP_IDF_DOC_ENV_IMAGE
  77. tags:
  78. - deploy
  79. - shiny
  80. dependencies:
  81. - build_docs_en_esp32
  82. - build_docs_en_esp32s2
  83. - build_docs_zh_CN_esp32
  84. - build_docs_zh_CN_esp32s2
  85. variables:
  86. DOCS_BUILD_DIR: "${IDF_PATH}/docs/_build/"
  87. PYTHONUNBUFFERED: 1
  88. script:
  89. - mkdir -p ~/.ssh
  90. - chmod 700 ~/.ssh
  91. - echo -n $DOCS_DEPLOY_PRIVATEKEY > ~/.ssh/id_rsa_base64
  92. - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
  93. - chmod 600 ~/.ssh/id_rsa
  94. - echo -e "Host $DOCS_DEPLOY_SERVER\n\tStrictHostKeyChecking no\n\tUser $DOCS_DEPLOY_SERVER_USER\n" >> ~/.ssh/config
  95. - export GIT_VER=$(git describe --always)
  96. - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ${IDF_PATH}/tools/ci/deploy_docs.py
  97. # deploys docs to CI_DOCKER_REGISTRY webserver, for internal review
  98. deploy_docs_preview:
  99. extends: .deploy_docs_template
  100. # Override default stage to happen before the post_check
  101. stage: test_deploy
  102. only:
  103. refs:
  104. - triggers
  105. variables:
  106. - $BOT_TRIGGER_WITH_LABEL == null
  107. - $BOT_LABEL_BUILD_DOCS
  108. variables:
  109. TYPE: "preview"
  110. # older branches use DOCS_DEPLOY_KEY, DOCS_SERVER, DOCS_SERVER_USER, DOCS_PATH for preview server so we keep these names for 'preview'
  111. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_DEPLOY_KEY"
  112. DOCS_DEPLOY_SERVER: "$DOCS_SERVER"
  113. DOCS_DEPLOY_SERVER_USER: "$DOCS_SERVER_USER"
  114. DOCS_DEPLOY_PATH: "$DOCS_PATH"
  115. DOCS_DEPLOY_URL_BASE: "https://$CI_DOCKER_REGISTRY/docs/esp-idf"
  116. # deploy docs to production webserver
  117. deploy_docs_production:
  118. extends: .deploy_docs_template
  119. only:
  120. refs:
  121. # The DOCS_PROD_* variables used by this job are "Protected" so these branches must all be marked "Protected" in Gitlab settings
  122. - master
  123. - /^release\/v/
  124. - /^v\d+\.\d+(\.\d+)?($|-)/
  125. variables:
  126. - $BOT_TRIGGER_WITH_LABEL == null
  127. variables:
  128. TYPE: "preview"
  129. DOCS_DEPLOY_PRIVATEKEY: "$DOCS_PROD_DEPLOY_KEY"
  130. DOCS_DEPLOY_SERVER: "$DOCS_PROD_SERVER"
  131. DOCS_DEPLOY_SERVER_USER: "$DOCS_PROD_SERVER_USER"
  132. DOCS_DEPLOY_PATH: "$DOCS_PROD_PATH"
  133. DOCS_DEPLOY_URL_BASE: "https://docs.espressif.com/projects/esp-idf"
  134. deploy_test_result:
  135. stage: deploy
  136. image: $CI_DOCKER_REGISTRY/bot-env
  137. tags:
  138. - deploy_test
  139. when: always
  140. only:
  141. refs:
  142. - master
  143. - schedules
  144. artifacts:
  145. when: always
  146. paths:
  147. - ${CI_PROJECT_DIR}/test-management/*.log
  148. # save all test logs as artifacts, make it easier to track errors
  149. - ${CI_PROJECT_DIR}/TEST_LOGS
  150. - $CI_PROJECT_DIR/$CI_COMMIT_SHA
  151. expire_in: 1 mos
  152. variables:
  153. UNIT_TEST_CASE_FILE: "${CI_PROJECT_DIR}/components/idf_test/unit_test/TestCaseAll.yml"
  154. BOT_ACCOUNT_CONFIG_FILE: "${CI_PROJECT_DIR}/test-management/Config/Account.local.yml"
  155. TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
  156. AUTO_TEST_SCRIPT_PATH: "${CI_PROJECT_DIR}/auto_test_script"
  157. before_script:
  158. - mkdir -p ~/.ssh
  159. - chmod 700 ~/.ssh
  160. - echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
  161. - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
  162. - chmod 600 ~/.ssh/id_rsa
  163. - echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
  164. script:
  165. - export GIT_SHA=$(echo ${CI_COMMIT_SHA} | cut -c 1-8)
  166. - export REV_COUNT=$(git rev-list --count HEAD)
  167. - export SUMMARY="IDF CI test result for $GIT_SHA (r${REV_COUNT})"
  168. # artifacts of job update_test_cases creates test-management folder
  169. # we need to remove it so we can clone test-management folder again
  170. - rm -r test-management
  171. - git clone $TEST_MANAGEMENT_REPO
  172. - python3 $CHECKOUT_REF_SCRIPT test-management test-management
  173. - cd test-management
  174. - echo $BOT_JIRA_ACCOUNT > ${BOT_ACCOUNT_CONFIG_FILE}
  175. # update test results
  176. - 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}