.gitlab-ci.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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_H7_REPO: https://github.com/STMicroelectronics/STM32CubeH7
  13. STM32_CUBE_H7_REPO_TAG: v1.11.1
  14. ARM_TOOLCHAIN_URL: https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x86_64-arm-none-eabi.tar.xz?rev=e434b9ea4afc4ed7998329566b764309&hash=CA590209F5774EE1C96E6450E14A3E26
  15. QEMU_PATH: /opt/qemu/bin/qemu-system-xtensa
  16. ZEPHYR_REPO: https://github.com/zephyrproject-rtos/zephyr.git
  17. ZEPHYR_REPO_REV: v3.5.0
  18. ZEPHYR_TOOLCHAIN: https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.3/toolchain_linux-x86_64_xtensa-espressif_esp32_zephyr-elf.tar.xz
  19. ZEPHYR_SDK: https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.3/zephyr-sdk-0.16.3_linux-aarch64_minimal.tar.xz
  20. .build_idf_template:
  21. stage: build
  22. image: espressif/idf:latest
  23. tags:
  24. - build
  25. - internet
  26. variables:
  27. PEDANTIC_FLAGS: "-Werror=all -Werror=extra"
  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. - cd $CI_PROJECT_DIR/examples/esp32_spi_load_ram_example
  37. - idf.py build
  38. build_idf_v4.2:
  39. extends: .build_idf_template
  40. image: espressif/idf:release-v4.2
  41. build_idf_v4.3:
  42. extends: .build_idf_template
  43. image: espressif/idf:release-v4.3
  44. build_idf_v4.4:
  45. extends: .build_idf_template
  46. image: espressif/idf:release-v4.4
  47. build_idf_v5.0:
  48. extends: .build_idf_template
  49. image: espressif/idf:release-v5.0
  50. build_idf_v5.1:
  51. extends: .build_idf_template
  52. image: espressif/idf:release-v5.1
  53. build_idf_master:
  54. extends: .build_idf_template
  55. image: espressif/idf:latest
  56. build_stm32:
  57. stage: build
  58. # IDF is not necessary for STM32 build, but this image is already used in another job
  59. # and it comes with a recent enough CMake version.
  60. image: espressif/idf:latest
  61. tags:
  62. - build
  63. - internet
  64. script:
  65. - cd $CI_PROJECT_DIR
  66. - git submodule update --init
  67. - git clone --depth=1 -b ${STM32_CUBE_H7_REPO_TAG} ${STM32_CUBE_H7_REPO}
  68. - wget --no-verbose -O gcc-arm-none-eabi.tar.xz ${ARM_TOOLCHAIN_URL}
  69. - tar xf gcc-arm-none-eabi.tar.xz
  70. - mv arm-gnu-toolchain-* gcc-arm-none-eabi
  71. - mkdir $CI_PROJECT_DIR/examples/stm32_example/build
  72. - cd $CI_PROJECT_DIR/examples/stm32_example/build
  73. - cmake -DSTM32_TOOLCHAIN_PATH=$CI_PROJECT_DIR/gcc-arm-none-eabi -DSTM32_CUBE_H7_PATH=$CI_PROJECT_DIR/STM32CubeH7 -G Ninja ..
  74. - cmake --build .
  75. build_zephyr:
  76. stage: build
  77. image: espressif/idf:latest
  78. tags:
  79. - build
  80. - internet
  81. script:
  82. - mkdir $CI_PROJECT_DIR/zephyrproject-rtos
  83. - cd $CI_PROJECT_DIR/zephyrproject-rtos
  84. - git clone --single-branch --depth=1 -b ${ZEPHYR_REPO_REV} ${ZEPHYR_REPO}
  85. - mkdir $CI_PROJECT_DIR/zephyrproject-rtos/zephyr-sdk
  86. - cd $CI_PROJECT_DIR/zephyrproject-rtos/zephyr-sdk
  87. - wget --no-verbose -O zephyr_sdk.tar.xz ${ZEPHYR_SDK}
  88. - tar xvf zephyr_sdk.tar.xz --strip-components=1
  89. - wget --no-verbose -O esp32_toolchain.tar.xz ${ZEPHYR_TOOLCHAIN}
  90. - tar xvf esp32_toolchain.tar.xz
  91. - export ZEPHYR_SDK_INSTALL_DIR=$(pwd)
  92. - export ZEPHYR_TOOLCHAIN_VARIANT="zephyr"
  93. - cd $CI_PROJECT_DIR/zephyrproject-rtos/zephyr
  94. - export ZEPHYR_BASE=$(pwd)
  95. - pip install -r scripts/requirements.txt
  96. - pip install wheel
  97. - if [[ ! -d "$CI_PROJECT_DIR/zephyrproject-rtos/.west" ]]; then
  98. - west init -l .
  99. - fi
  100. - unset IDF_PATH
  101. - west zephyr-export
  102. - west update hal_espressif
  103. - west build -p -b esp32_devkitc_wroom $CI_PROJECT_DIR/examples/zephyr_example -DZEPHYR_EXTRA_MODULES=$CI_PROJECT_DIR
  104. run_tests:
  105. stage: test
  106. image: ${CI_DOCKER_REGISTRY}/qemu:esp-develop-20191124
  107. tags:
  108. - build
  109. - internet
  110. script:
  111. - cd $CI_PROJECT_DIR/test
  112. - export QEMU_PATH=/opt/qemu/bin/qemu-system-xtensa
  113. - ./run_test.sh qemu
  114. - ./run_test.sh host
  115. push_to_the_components_registry:
  116. stage: deploy
  117. image: python:3.10-alpine
  118. tags:
  119. - build
  120. - internet
  121. rules:
  122. - if: '$CI_COMMIT_BRANCH == "master"'
  123. - if: '$FORCE_PUSH_COMPONENT == "1"'
  124. script:
  125. - pip install idf-component-manager
  126. - python -m idf_component_manager upload-component --allow-existing --name=esp-serial-flasher --namespace=espressif