.gitlab-ci.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. stages:
  2. - build
  3. - test
  4. - deploy
  5. workflow:
  6. rules:
  7. - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
  8. - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
  9. when: never
  10. - if: "$CI_COMMIT_BRANCH"
  11. variables:
  12. STM32_CUBE_F4_REPO: https://github.com/STMicroelectronics/STM32CubeF4
  13. STM32_CUBE_F4_REPO_TAG: v1.26.2
  14. ARM_TOOLCHAIN_URL: https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2?revision=05382cca-1721-44e1-ae19-1e7c3dc96118&la=en&hash=D7C9D18FCA2DD9F894FD9F3C3DC9228498FA281A
  15. QEMU_PATH: /opt/qemu/bin/qemu-system-xtensa
  16. ZEPHYR_REPO: https://github.com/zephyrproject-rtos/zephyr.git
  17. ZEPHYR_REPO_REV: v3.2.0
  18. ZEPHYR_TOOLCHAIN: https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/toolchain_linux-x86_64_xtensa-espressif_esp32_zephyr-elf.tar.gz
  19. ZEPHYR_SDK: https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.15.2/zephyr-sdk-0.15.2_linux-aarch64_minimal.tar.gz
  20. .build_idf_template:
  21. stage: build
  22. image: espressif/idf:latest
  23. tags:
  24. - build
  25. - internet
  26. variables:
  27. PEDANTIC_FLAGS: "-Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function"
  28. EXTRA_CFLAGS: "${PEDANTIC_FLAGS}"
  29. EXTRA_CXXFLAGS: "${PEDANTIC_FLAGS}"
  30. script:
  31. - cd $CI_PROJECT_DIR/examples/esp32_example
  32. - idf.py build -DMD5_ENABLED=1
  33. - idf.py build -DMD5_ENABLED=0
  34. - cd $CI_PROJECT_DIR/examples/esp32_load_ram_example
  35. - idf.py build
  36. build_idf_v4.2:
  37. extends: .build_idf_template
  38. image: espressif/idf:release-v4.2
  39. build_idf_v4.3:
  40. extends: .build_idf_template
  41. image: espressif/idf:release-v4.3
  42. build_idf_v4.4:
  43. extends: .build_idf_template
  44. image: espressif/idf:release-v4.4
  45. build_idf_v5.0:
  46. extends: .build_idf_template
  47. image: espressif/idf:release-v5.0
  48. build_idf_v5.1:
  49. extends: .build_idf_template
  50. image: espressif/idf:release-v5.1
  51. build_idf_master:
  52. extends: .build_idf_template
  53. image: espressif/idf:latest
  54. build_stm32:
  55. stage: build
  56. # IDF is not necessary for STM32 build, but this image is already used in another job
  57. # and it comes with a recent enough CMake version.
  58. image: espressif/idf:latest
  59. tags:
  60. - build
  61. - internet
  62. script:
  63. - cd $CI_PROJECT_DIR
  64. - git submodule update --init
  65. - git clone --depth=1 -b ${STM32_CUBE_F4_REPO_TAG} ${STM32_CUBE_F4_REPO}
  66. - wget --no-verbose -O gcc-arm-none-eabi.tar.bz2 ${ARM_TOOLCHAIN_URL}
  67. - tar -xjf gcc-arm-none-eabi.tar.bz2
  68. - mv gcc-arm-none-eabi-* gcc-arm-none-eabi
  69. - mkdir $CI_PROJECT_DIR/examples/stm32_example/build
  70. - cd $CI_PROJECT_DIR/examples/stm32_example/build
  71. - cmake -DTOOLCHAIN_PREFIX=$CI_PROJECT_DIR/gcc-arm-none-eabi -DSTM32Cube_DIR=$CI_PROJECT_DIR/STM32CubeF4 -G Ninja ..
  72. - cmake --build .
  73. build_zephyr:
  74. stage: build
  75. image: espressif/idf:latest
  76. tags:
  77. - build
  78. - internet
  79. script:
  80. - mkdir $CI_PROJECT_DIR/zephyrproject-rtos
  81. - cd $CI_PROJECT_DIR/zephyrproject-rtos
  82. - git clone --single-branch --depth=1 -b ${ZEPHYR_REPO_REV} ${ZEPHYR_REPO}
  83. - mkdir $CI_PROJECT_DIR/zephyrproject-rtos/zephyr-sdk
  84. - cd $CI_PROJECT_DIR/zephyrproject-rtos/zephyr-sdk
  85. - wget --no-verbose -O zephyr_sdk.tar.gz ${ZEPHYR_SDK}
  86. - tar xvf zephyr_sdk.tar.gz --strip-components=1
  87. - wget --no-verbose -O esp32_toolchain.tar.gz ${ZEPHYR_TOOLCHAIN}
  88. - tar xvf esp32_toolchain.tar.gz
  89. - export ZEPHYR_SDK_INSTALL_DIR=$(pwd)
  90. - export ZEPHYR_TOOLCHAIN_VARIANT="zephyr"
  91. - cd $CI_PROJECT_DIR/zephyrproject-rtos/zephyr
  92. - export ZEPHYR_BASE=$(pwd)
  93. - pip install -r scripts/requirements.txt
  94. - pip install wheel
  95. - if [[ ! -d "$CI_PROJECT_DIR/zephyrproject-rtos/.west" ]]; then
  96. - west init -l .
  97. - fi
  98. - unset IDF_PATH
  99. - west zephyr-export
  100. - west update hal_espressif
  101. - west build -p -b esp32 $CI_PROJECT_DIR/examples/zephyr_example -DZEPHYR_EXTRA_MODULES=$CI_PROJECT_DIR
  102. run_tests:
  103. stage: test
  104. image: ${CI_DOCKER_REGISTRY}/qemu:esp-develop-20191124
  105. tags:
  106. - build
  107. - internet
  108. script:
  109. - cd $CI_PROJECT_DIR/test
  110. - export QEMU_PATH=/opt/qemu/bin/qemu-system-xtensa
  111. - ./run_test.sh qemu
  112. - ./run_test.sh host
  113. push_to_the_components_registry:
  114. stage: deploy
  115. image: python:3.10-alpine
  116. tags:
  117. - build
  118. - internet
  119. rules:
  120. - if: '$CI_COMMIT_BRANCH == "master"'
  121. - if: '$FORCE_PUSH_COMPONENT == "1"'
  122. script:
  123. - pip install idf-component-manager
  124. - python -m idf_component_manager upload-component --allow-existing --name=esp-serial-flasher --namespace=espressif