mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-17 07:06:41 +08:00
209 lines
6.8 KiB
YAML
209 lines
6.8 KiB
YAML
stages:
|
|
- build
|
|
- deploy
|
|
|
|
variables:
|
|
GIT_STRATEGY: clone
|
|
|
|
IDF_PATH: "$CI_PROJECT_DIR"
|
|
|
|
# Versioned esp-idf-doc env image to use for all document building jobs
|
|
ESP_IDF_DOC_ENV_IMAGE: "$CI_DOCKER_REGISTRY/esp-idf-doc-env:v8"
|
|
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
|
ESPCI_TOKEN: $GITLAB_KEY
|
|
|
|
# before each job, we need to check if this job is filtered by bot stage/job filter
|
|
.apply_bot_filter: &apply_bot_filter
|
|
python $APPLY_BOT_FILTER_SCRIPT || exit 0
|
|
|
|
before_script:
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GITLAB_KEY >> ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
|
|
.do_nothing_before:
|
|
before_script: &do_nothing_before
|
|
# apply bot filter in before script
|
|
- *apply_bot_filter
|
|
- echo "Not setting up GitLab key, fetching submodules ..."
|
|
- git submodule update --init --recursive
|
|
- tools/idf_tools.py --non-interactive install && eval "$(tools/idf_tools.py --non-interactive export)" || exit 1
|
|
- source tools/ci/configure_ci_environment.sh
|
|
|
|
.build_template: &build_template
|
|
stage: build
|
|
image: $CI_DOCKER_REGISTRY/esp8266-ci-env-new
|
|
tags:
|
|
- build
|
|
|
|
build_ssc:
|
|
<<: *build_template
|
|
artifacts:
|
|
paths:
|
|
- ./SSC/ssc_bin
|
|
expire_in: 6 mos
|
|
script:
|
|
- tools/idf_tools.py --non-interactive install && eval "$(tools/idf_tools.py --non-interactive export)" || exit 1
|
|
- git clone $GITLAB_SSH_SERVER/yinling/SSC.git
|
|
- cd SSC
|
|
# try checkout same branch
|
|
- git checkout "release/v3.4_8266" || echo "Using default branch..."
|
|
- ./gen_misc_rtos.sh
|
|
|
|
push_master_to_github:
|
|
stage: deploy
|
|
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
|
tags:
|
|
- deploy
|
|
only:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
when: on_success
|
|
dependencies: []
|
|
variables:
|
|
GITHUB_PUSH_REFS: refs/remotes/origin/release refs/remotes/origin/master
|
|
before_script: *do_nothing_before
|
|
script:
|
|
- mkdir -p ~/.ssh
|
|
- chmod 700 ~/.ssh
|
|
- echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64
|
|
- base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
|
|
- chmod 600 ~/.ssh/id_rsa
|
|
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
|
|
- git remote remove github &>/dev/null || true
|
|
- git remote add github git@github.com:espressif/ESP8266_RTOS_SDK.git
|
|
# What the next line of script does: goes through the list of refs for all branches we push to github,
|
|
# generates a snippet of shell which is evaluated. The snippet checks CI_COMMIT_SHA against the SHA
|
|
# (aka objectname) at tip of each branch, and if any SHAs match then it checks out the local branch
|
|
# and then pushes that ref to a corresponding github branch
|
|
- eval $(git for-each-ref --shell bash --format 'if [ $CI_COMMIT_SHA == %(objectname) ]; then git checkout -B %(refname:strip=3); git push --follow-tags github %(refname:strip=3); fi;' $GITHUB_PUSH_REFS)
|
|
|
|
build_docs:
|
|
stage: build
|
|
image: $ESP_IDF_DOC_ENV_IMAGE
|
|
tags:
|
|
- build_docs
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
# English version of documentation
|
|
- docs/en/doxygen-warning-log.txt
|
|
- docs/en/sphinx-warning-log.txt
|
|
- docs/en/sphinx-warning-log-sanitized.txt
|
|
- docs/en/_build/html
|
|
- docs/sphinx-err-*
|
|
expire_in: 1 day
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_BUILD_DOCS
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
script:
|
|
- source /opt/pyenv/activate && pyenv global 3.6.10
|
|
- /opt/pyenv/pyenv-1.2.16/versions/3.6.10/bin/python -m pip install --user -r $CI_PROJECT_DIR/docs/requirements.txt
|
|
- cd docs
|
|
- cd en
|
|
- make gh-linkcheck
|
|
- make html
|
|
- ../check_doc_warnings.sh
|
|
|
|
.build_examples_make_template: &build_examples_make_template
|
|
<<: *build_template
|
|
# This is a workaround for a rarely encountered issue with building examples in CI.
|
|
# Probably related to building of Kconfig in 'make clean' stage
|
|
retry: 1
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $LOG_PATH
|
|
- ./build_examples/example_builds/*/build/bootloader/*.bin
|
|
- ./build_examples/example_builds/*/build/partition_table/*.bin
|
|
- ./build_examples/example_builds/*/build/*.bin
|
|
- ./build_examples/example_builds/*/build/*.elf
|
|
- ./build_examples/example_builds/*/build/*.map
|
|
- ./build_examples/example_builds/*/build/*.config
|
|
expire_in: 2 days
|
|
variables:
|
|
LOG_PATH: "$CI_PROJECT_DIR/log_examples_make"
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_EXAMPLE_TEST
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
before_script: *do_nothing_before
|
|
script:
|
|
# it's not possible to build 100% out-of-tree and have the "artifacts"
|
|
# mechanism work, but this is the next best thing
|
|
- rm -rf build_examples
|
|
- mkdir build_examples
|
|
- cd build_examples
|
|
# build some of examples
|
|
- mkdir -p ${LOG_PATH}
|
|
- ${IDF_PATH}/tools/ci/build_examples.sh "${CI_JOB_NAME}"
|
|
|
|
# same as above, but for CMake
|
|
.build_examples_cmake_template: &build_examples_cmake_template
|
|
<<: *build_template
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- $LOG_PATH
|
|
- ./build_examples_cmake/example_builds/*/build/bootloader/*.bin
|
|
- ./build_examples_cmake/example_builds/*/build/partition_table/*.bin
|
|
- ./build_examples_cmake/example_builds/*/build/*.bin
|
|
- ./build_examples_cmake/example_builds/*/build/*.elf
|
|
- ./build_examples_cmake/example_builds/*/build/*.map
|
|
- ./build_examples_cmake/example_builds/*/build/*.config
|
|
- ./build_examples_cmake/example_builds/*/build/flasher_args.json
|
|
- ./build_examples_cmake/example_builds/*/sdkconfig
|
|
expire_in: 2 days
|
|
variables:
|
|
LOG_PATH: "$CI_PROJECT_DIR/log_examples_cmake"
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_EXAMPLE_TEST
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
before_script: *do_nothing_before
|
|
script:
|
|
# it's not possible to build 100% out-of-tree and have the "artifacts"
|
|
# mechanism work, but this is the next best thing
|
|
- rm -rf build_examples_cmake
|
|
- mkdir build_examples_cmake
|
|
- cd build_examples_cmake
|
|
# build some of examples
|
|
- mkdir -p ${LOG_PATH}
|
|
- ${IDF_PATH}/tools/ci/build_examples_cmake.sh "${CI_JOB_NAME}"
|
|
|
|
build_examples_make_00:
|
|
<<: *build_examples_make_template
|
|
|
|
build_examples_make_01:
|
|
<<: *build_examples_make_template
|
|
|
|
build_examples_make_02:
|
|
<<: *build_examples_make_template
|
|
|
|
build_examples_make_03:
|
|
<<: *build_examples_make_template
|
|
|
|
build_examples_cmake_00:
|
|
<<: *build_examples_cmake_template
|
|
|
|
build_examples_cmake_01:
|
|
<<: *build_examples_cmake_template
|
|
|
|
build_examples_cmake_02:
|
|
<<: *build_examples_cmake_template
|
|
|
|
build_examples_cmake_03:
|
|
<<: *build_examples_cmake_template
|