.gitlab-ci.yml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. build_idf_v3.3:
  35. extends: .build_idf_template
  36. image: espressif/idf:release-v3.3
  37. build_idf_v4.1:
  38. extends: .build_idf_template
  39. image: espressif/idf:release-v4.1
  40. build_idf_v4.2:
  41. extends: .build_idf_template
  42. image: espressif/idf:release-v4.2
  43. build_idf_v4.3:
  44. extends: .build_idf_template
  45. image: espressif/idf:release-v4.3
  46. build_idf_v4.4:
  47. extends: .build_idf_template
  48. image: espressif/idf:release-v4.4
  49. build_idf_master:
  50. extends: .build_idf_template
  51. image: espressif/idf:latest
  52. build_stm32:
  53. stage: build
  54. # IDF is not necessary for STM32 build, but this image is already used in another job
  55. # and it comes with a recent enough CMake version.
  56. image: espressif/idf:latest
  57. tags:
  58. - build
  59. - internet
  60. script:
  61. - cd $CI_PROJECT_DIR
  62. - git submodule update --init
  63. - git clone --depth=1 -b ${STM32_CUBE_F4_REPO_TAG} ${STM32_CUBE_F4_REPO}
  64. - wget --no-verbose -O gcc-arm-none-eabi.tar.bz2 ${ARM_TOOLCHAIN_URL}
  65. - tar -xjf gcc-arm-none-eabi.tar.bz2
  66. - mv gcc-arm-none-eabi-* gcc-arm-none-eabi
  67. - mkdir $CI_PROJECT_DIR/examples/stm32_example/build
  68. - cd $CI_PROJECT_DIR/examples/stm32_example/build
  69. - cmake -DTOOLCHAIN_PREFIX=$CI_PROJECT_DIR/gcc-arm-none-eabi -DSTM32Cube_DIR=$CI_PROJECT_DIR/STM32CubeF4 -G Ninja ..
  70. - cmake --build .
  71. build_zephyr:
  72. stage: build
  73. image: espressif/idf:latest
  74. tags:
  75. - build
  76. - internet
  77. script:
  78. - mkdir $CI_PROJECT_DIR/zephyrproject-rtos
  79. - cd $CI_PROJECT_DIR/zephyrproject-rtos
  80. - git clone --single-branch --depth=1 -b ${ZEPHYR_REPO_REV} ${ZEPHYR_REPO}
  81. - mkdir $CI_PROJECT_DIR/zephyrproject-rtos/zephyr-sdk
  82. - cd $CI_PROJECT_DIR/zephyrproject-rtos/zephyr-sdk
  83. - wget --no-verbose -O zephyr_sdk.tar.gz ${ZEPHYR_SDK}
  84. - tar xvf zephyr_sdk.tar.gz --strip-components=1
  85. - wget --no-verbose -O esp32_toolchain.tar.gz ${ZEPHYR_TOOLCHAIN}
  86. - tar xvf esp32_toolchain.tar.gz
  87. - export ZEPHYR_SDK_INSTALL_DIR=$(pwd)
  88. - export ZEPHYR_TOOLCHAIN_VARIANT="zephyr"
  89. - cd $CI_PROJECT_DIR/zephyrproject-rtos/zephyr
  90. - export ZEPHYR_BASE=$(pwd)
  91. - pip install -r scripts/requirements.txt
  92. - pip install wheel
  93. - if [[ ! -d "$CI_PROJECT_DIR/zephyrproject-rtos/.west" ]]; then
  94. - west init -l .
  95. - fi
  96. - unset IDF_PATH
  97. - west zephyr-export
  98. - west update hal_espressif
  99. - west build -p -b esp32 $CI_PROJECT_DIR/examples/zephyr_example -DZEPHYR_EXTRA_MODULES=$CI_PROJECT_DIR
  100. run_tests:
  101. stage: test
  102. image: ${CI_DOCKER_REGISTRY}/qemu:esp-develop-20191124
  103. tags:
  104. - build
  105. - internet
  106. script:
  107. - cd $CI_PROJECT_DIR/test
  108. - export QEMU_PATH=/opt/qemu/bin/qemu-system-xtensa
  109. - ./run_test.sh qemu
  110. - ./run_test.sh host
  111. push_to_the_components_registry:
  112. stage: deploy
  113. image: python:3.10-alpine
  114. tags:
  115. - build
  116. - internet
  117. rules:
  118. - if: '$CI_COMMIT_BRANCH == "master"'
  119. - if: '$FORCE_PUSH_COMPONENT == "1"'
  120. script:
  121. - pip install idf-component-manager
  122. - python -m idf_component_manager upload-component --allow-existing --name=esp-serial-flasher --namespace=espressif