mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
ad6609a561
This will fail pipeline earlier if template project of S2 cannot pass the build. The other builds for the template app, which is not CMake or default optimization level are put into the build_template_app of build stage.
411 lines
11 KiB
YAML
411 lines
11 KiB
YAML
.build_template:
|
|
stage: build
|
|
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
|
tags:
|
|
- build
|
|
variables:
|
|
BATCH_BUILD: "1"
|
|
V: "0"
|
|
SIZE_INFO_LOCATION: "$CI_PROJECT_DIR/size_info.txt"
|
|
|
|
.build_ssc_template:
|
|
extends: .build_template
|
|
parallel: 3
|
|
artifacts:
|
|
paths:
|
|
- SSC/ssc_bin
|
|
expire_in: 1 week
|
|
variables:
|
|
TARGET_NAME: "ESP32"
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_INTEGRATION_TEST
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
script:
|
|
- ./tools/ci/retry_failed.sh git clone $SSC_REPOSITORY
|
|
- python $CHECKOUT_REF_SCRIPT SSC SSC
|
|
- cd SSC
|
|
- MAKEFLAGS= ./ci_build_ssc.sh $TARGET_NAME
|
|
|
|
build_ssc_esp32:
|
|
extends: .build_ssc_template
|
|
variables:
|
|
TARGET_NAME: "ESP32"
|
|
|
|
build_ssc_esp32s2:
|
|
extends: .build_ssc_template
|
|
parallel: 2
|
|
variables:
|
|
TARGET_NAME: "ESP32S2"
|
|
|
|
.build_esp_idf_tests_cmake:
|
|
extends: .build_template
|
|
artifacts:
|
|
paths:
|
|
- tools/unit-test-app/output/${IDF_TARGET}
|
|
- tools/unit-test-app/builds/*.json
|
|
- tools/unit-test-app/builds/${IDF_TARGET}/*/size.json
|
|
- components/idf_test/unit_test/*.yml
|
|
- $LOG_PATH
|
|
- $SIZE_INFO_LOCATION
|
|
when: always
|
|
expire_in: 4 days
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_UNIT_TEST
|
|
- $BOT_LABEL_UNIT_TEST_S2
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
variables:
|
|
LOG_PATH: "$CI_PROJECT_DIR/log_ut_cmake"
|
|
BUILD_PATH: ${CI_PROJECT_DIR}/tools/unit-test-app/builds
|
|
OUTPUT_PATH: ${CI_PROJECT_DIR}/tools/unit-test-app/output
|
|
BUILD_SYSTEM: "cmake"
|
|
TEST_TYPE: "unit_test"
|
|
script:
|
|
# RISC-V toolchain is optional but ULP may need it, so install:
|
|
- $IDF_PATH/tools/idf_tools.py install riscv-none-embed-gcc
|
|
- . $IDF_PATH/export.sh
|
|
- ${IDF_PATH}/tools/ci/find_apps_build_apps.sh
|
|
- cd $CI_PROJECT_DIR/tools/unit-test-app
|
|
- python tools/UnitTestParser.py ${BUILD_PATH}
|
|
|
|
build_esp_idf_tests_cmake_esp32:
|
|
extends: .build_esp_idf_tests_cmake
|
|
variables:
|
|
IDF_TARGET: esp32
|
|
|
|
build_esp_idf_tests_cmake_esp32s2:
|
|
extends: .build_esp_idf_tests_cmake
|
|
variables:
|
|
IDF_TARGET: esp32s2
|
|
|
|
.build_examples_template:
|
|
extends: .build_template
|
|
parallel: 8
|
|
artifacts:
|
|
when: always
|
|
expire_in: 4 days
|
|
only:
|
|
# Here both 'variables' and 'refs' conditions are given. They are combined with "AND" logic.
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_EXAMPLE_TEST
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
- $BOT_LABEL_WEEKEND_TEST
|
|
variables:
|
|
SCAN_TEST_JSON: ${CI_PROJECT_DIR}/examples/test_configs/scan_${IDF_TARGET}_${BUILD_SYSTEM}.json
|
|
TEST_TYPE: "example_test"
|
|
script:
|
|
# RISC-V toolchain is optional but ULP may need it, so install:
|
|
- $IDF_PATH/tools/idf_tools.py install riscv-none-embed-gcc
|
|
- . $IDF_PATH/export.sh
|
|
# it's not possible to build 100% out-of-tree and have the "artifacts"
|
|
# mechanism work, but this is the next best thing
|
|
- ${IDF_PATH}/tools/ci/find_apps_build_apps.sh
|
|
|
|
build_examples_make:
|
|
extends: .build_examples_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:
|
|
paths:
|
|
- $LOG_PATH
|
|
- build_examples/*/*/*/build/size.json
|
|
- $SIZE_INFO_LOCATION
|
|
variables:
|
|
LOG_PATH: "${CI_PROJECT_DIR}/log_examples_make"
|
|
BUILD_PATH: "${CI_PROJECT_DIR}/build_examples_make"
|
|
BUILD_SYSTEM: "make"
|
|
IDF_TARGET: "esp32" # currently we only support esp32
|
|
only:
|
|
refs:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
- triggers
|
|
- schedules
|
|
- pipelines
|
|
- web
|
|
|
|
# same as above, but for CMake
|
|
.build_examples_cmake: &build_examples_cmake
|
|
extends: .build_examples_template
|
|
dependencies:
|
|
- scan_tests
|
|
artifacts:
|
|
paths:
|
|
- build_examples/list.json
|
|
- build_examples/list_job_*.json
|
|
- build_examples/*/*/*/sdkconfig
|
|
- build_examples/*/*/*/build/size.json
|
|
- build_examples/*/*/*/build/*.bin
|
|
- build_examples/*/*/*/build/*.elf
|
|
- build_examples/*/*/*/build/*.map
|
|
- build_examples/*/*/*/build/flasher_args.json
|
|
- build_examples/*/*/*/build/bootloader/*.bin
|
|
- build_examples/*/*/*/build/partition_table/*.bin
|
|
- $LOG_PATH
|
|
- $SIZE_INFO_LOCATION
|
|
variables:
|
|
LOG_PATH: "${CI_PROJECT_DIR}/log_examples"
|
|
BUILD_PATH: "${CI_PROJECT_DIR}/build_examples"
|
|
BUILD_SYSTEM: "cmake"
|
|
|
|
build_examples_cmake_esp32:
|
|
extends: .build_examples_cmake
|
|
parallel: 10
|
|
variables:
|
|
IDF_TARGET: esp32
|
|
|
|
build_examples_cmake_esp32s2:
|
|
extends: .build_examples_cmake
|
|
variables:
|
|
IDF_TARGET: esp32s2
|
|
|
|
.build_test_apps: &build_test_apps
|
|
extends: .build_template
|
|
stage: build
|
|
dependencies:
|
|
- scan_tests
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- build_test_apps/list.json
|
|
- build_test_apps/list_job_*.json
|
|
- build_test_apps/*/*/*/sdkconfig
|
|
- build_test_apps/*/*/*/build/size.json
|
|
- build_test_apps/*/*/*/build/*.bin
|
|
- build_test_apps/*/*/*/build/*.elf
|
|
- build_test_apps/*/*/*/build/*.map
|
|
- build_test_apps/*/*/*/build/flasher_args.json
|
|
- build_test_apps/*/*/*/build/bootloader/*.bin
|
|
- build_test_apps/*/*/*/build/partition_table/*.bin
|
|
- $LOG_PATH
|
|
- $SIZE_INFO_LOCATION
|
|
expire_in: 3 days
|
|
variables:
|
|
LOG_PATH: "${CI_PROJECT_DIR}/log_test_apps"
|
|
BUILD_PATH: "${CI_PROJECT_DIR}/build_test_apps"
|
|
BUILD_SYSTEM: "cmake"
|
|
SCAN_TEST_JSON: ${CI_PROJECT_DIR}/tools/test_apps/test_configs/scan_${IDF_TARGET}_${BUILD_SYSTEM}.json
|
|
TEST_TYPE: custom_test
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
- $BOT_LABEL_CUSTOM_TEST
|
|
- $BOT_LABEL_WEEKEND_TEST
|
|
script:
|
|
- ${IDF_PATH}/tools/ci/find_apps_build_apps.sh
|
|
|
|
build_test_apps_esp32:
|
|
extends: .build_test_apps
|
|
variables:
|
|
IDF_TARGET: esp32
|
|
|
|
build_test_apps_esp32s2:
|
|
extends: .build_test_apps
|
|
variables:
|
|
IDF_TARGET: esp32s2
|
|
|
|
|
|
# If you want to add new build example jobs, please add it into dependencies of `.example_test_template`
|
|
|
|
.build_docs_template: &build_docs_template
|
|
stage: build
|
|
image: $ESP_IDF_DOC_ENV_IMAGE
|
|
tags:
|
|
- build_docs
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- docs/_build/*/*/*.txt
|
|
- docs/_build/*/*/html/*
|
|
- docs/_build/*/*/latex/*
|
|
expire_in: 4 days
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_BUILD_DOCS
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
dependencies: []
|
|
script:
|
|
- cd docs
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 pip install -r requirements.txt
|
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.6.10 ./build_docs.py -bs html latex -l $DOCLANG -t $DOCTGT build
|
|
|
|
build_docs_en_esp32:
|
|
extends: .build_docs_template
|
|
variables:
|
|
DOCLANG: "en"
|
|
DOCTGT: "esp32"
|
|
|
|
build_docs_en_esp32s2:
|
|
extends: .build_docs_template
|
|
variables:
|
|
DOCLANG: "en"
|
|
DOCTGT: "esp32s2"
|
|
|
|
build_docs_zh_CN_esp32:
|
|
extends: .build_docs_template
|
|
variables:
|
|
DOCLANG: "zh_CN"
|
|
DOCTGT: "esp32"
|
|
|
|
build_docs_zh_CN_esp32s2:
|
|
extends: .build_docs_template
|
|
variables:
|
|
DOCLANG: "zh_CN"
|
|
DOCTGT: "esp32s2"
|
|
|
|
test_build_system:
|
|
extends: .build_template
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
- $BOT_LABEL_WEEKEND_TEST
|
|
script:
|
|
- ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
|
|
- rm -rf test_build_system
|
|
- mkdir test_build_system
|
|
- cd test_build_system
|
|
- ${IDF_PATH}/tools/ci/test_build_system.sh
|
|
|
|
test_build_system_cmake:
|
|
extends: .build_template
|
|
only:
|
|
variables:
|
|
- $BOT_TRIGGER_WITH_LABEL == null
|
|
- $BOT_LABEL_BUILD
|
|
- $BOT_LABEL_REGULAR_TEST
|
|
- $BOT_LABEL_WEEKEND_TEST
|
|
script:
|
|
- ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
|
|
- rm -rf test_build_system
|
|
- mkdir test_build_system
|
|
- cd test_build_system
|
|
- ${IDF_PATH}/tools/ci/test_build_system_cmake.sh
|
|
|
|
test_build_system_cmake_macos:
|
|
extends: .macos_build_template
|
|
only:
|
|
refs:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
- schedules
|
|
- triggers
|
|
- pipelines
|
|
- web
|
|
variables:
|
|
- $CI_PIPELINE_SOURCE != "push" && $BOT_LABEL_MACOS_TEST != null
|
|
- $CI_PIPELINE_SOURCE == "push"
|
|
script:
|
|
- ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
|
|
- rm -rf test_build_system
|
|
- mkdir test_build_system
|
|
- cd test_build_system
|
|
- ${IDF_PATH}/tools/ci/test_build_system_cmake.sh
|
|
|
|
build_docker:
|
|
stage: build
|
|
image: espressif/docker-builder:1
|
|
tags:
|
|
- build_docker_amd64_brno
|
|
only:
|
|
refs:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
- schedules
|
|
variables:
|
|
DOCKER_TMP_IMAGE_NAME: "idf_tmp_image"
|
|
before_script: []
|
|
script:
|
|
- export DOCKER_BUILD_ARGS="--build-arg IDF_CLONE_URL=${CI_REPOSITORY_URL} --build-arg IDF_CLONE_BRANCH_OR_TAG=${CI_COMMIT_REF_NAME} --build-arg IDF_CHECKOUT_REF=${CI_COMMIT_TAG:-$CI_COMMIT_SHA}"
|
|
# Build
|
|
- docker build --tag ${DOCKER_TMP_IMAGE_NAME} ${DOCKER_BUILD_ARGS} tools/docker/
|
|
# We can't mount $PWD/examples/get-started/blink into the container, see https://gitlab.com/gitlab-org/gitlab-ce/issues/41227.
|
|
# The workaround mentioned there works, but leaves around directories which need to be cleaned up manually.
|
|
# Therefore, build a copy of the example located inside the container.
|
|
- docker run --rm --workdir /opt/esp/idf/examples/get-started/blink ${DOCKER_TMP_IMAGE_NAME} idf.py build
|
|
|
|
build_idf_exe:
|
|
stage: build
|
|
image: $CI_DOCKER_REGISTRY/esp32-toolchain-win-cross
|
|
tags:
|
|
- build
|
|
only:
|
|
refs:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
- schedules
|
|
before_script: []
|
|
artifacts:
|
|
paths:
|
|
- tools/windows/idf_exe/build/idf-exe-v*.zip
|
|
expire_in: 4 days
|
|
script:
|
|
- cd tools/windows/idf_exe/
|
|
- mkdir build
|
|
- cd build
|
|
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-i686-w64-mingw32.cmake -DCMAKE_BUILD_TYPE=Release ..
|
|
- cmake --build .
|
|
|
|
build_cmdlinerunner:
|
|
stage: build
|
|
image: $CI_DOCKER_REGISTRY/esp32-toolchain-win-cross
|
|
tags:
|
|
- build
|
|
only:
|
|
refs:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
- schedules
|
|
before_script: []
|
|
artifacts:
|
|
paths:
|
|
- tools/windows/tool_setup/cmdlinerunner/build/cmdlinerunner.dll
|
|
expire_in: 4 days
|
|
script:
|
|
- cd tools/windows/tool_setup/cmdlinerunner
|
|
- mkdir build
|
|
- cd build
|
|
- cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-i686-w64-mingw32.cmake -DCMAKE_BUILD_TYPE=Release ..
|
|
- cmake --build .
|
|
|
|
build_installer:
|
|
# using a different stage here to be able to use artifacts from build_cmdlinerunner job
|
|
stage: host_test
|
|
image: $CI_DOCKER_REGISTRY/wine-innosetup:1
|
|
tags:
|
|
- build
|
|
only:
|
|
refs:
|
|
- master
|
|
- /^release\/v/
|
|
- /^v\d+\.\d+(\.\d+)?($|-)/
|
|
- schedules
|
|
dependencies:
|
|
- build_cmdlinerunner
|
|
before_script: []
|
|
script:
|
|
- cd tools/windows/tool_setup/
|
|
- ./build_installer.sh
|
|
|
|
# This job builds template app with permutations of targets and optimization levels
|
|
build_template_app:
|
|
extends: .build_template_app_template
|