.gitlab-ci.yml 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. IDF_REPO: https://github.com/espressif/esp-idf.git
  13. STM32_CUBE_F4_REPO: https://github.com/STMicroelectronics/STM32CubeF4
  14. SERIAL_FLASHER_REPO: ${GITLAB_SSH_SERVER}/espressif/esp-serial-flasher.git
  15. QEMU_PATH: /opt/qemu/bin/qemu-system-xtensa
  16. .clone_and_setup_idf: &clone_and_setup_idf |
  17. git clone "${IDF_REPO}"
  18. cd esp-idf
  19. tools/idf_tools.py --non-interactive install all && eval "$(tools/idf_tools.py --non-interactive export)" || exit 1
  20. git submodule update --init
  21. export IDF_PATH=$(pwd)
  22. .clone_and_setup_stm32: &clone_and_setup_stm32 |
  23. cd $CI_PROJECT_DIR
  24. git submodule update --init
  25. git clone "${STM32_CUBE_F4_REPO}"
  26. mkdir $CI_PROJECT_DIR/examples/stm32_example/build
  27. wget -O gcc-arm-none-eabi.tar.bz2 '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'
  28. tar -xjf gcc-arm-none-eabi.tar.bz2
  29. mv gcc-arm-none-eabi-* gcc-arm-none-eabi
  30. .build_test_template:
  31. before_script:
  32. # Use CI Tools
  33. - curl -sSL ${CIT_LOADER_URL} | sh
  34. - source citools/import_functions
  35. - PATH=$CI_PROJECT_DIR/esp-idf/tools:$PATH
  36. build_with_idf:
  37. extends: .build_test_template
  38. stage: build
  39. image: $CI_DOCKER_REGISTRY/esp-env:v4.4-1
  40. tags:
  41. - build
  42. - internet
  43. script:
  44. - source /opt/pyenv/activate && pyenv global 3.6.13
  45. - *clone_and_setup_idf
  46. - cd $CI_PROJECT_DIR/examples/esp32_example
  47. # Build for all supported targets
  48. - idf.py build -DMD5_ENABLED=1
  49. - idf.py build -DMD5_ENABLED=0
  50. - *clone_and_setup_stm32
  51. - cd $CI_PROJECT_DIR/examples/stm32_example/build
  52. - cmake -DTOOLCHAIN_PREFIX=$CI_PROJECT_DIR/gcc-arm-none-eabi -DSTM32Cube_DIR=$CI_PROJECT_DIR/STM32CubeF4 .. && cmake --build .
  53. run_tests:
  54. extends: .build_test_template
  55. stage: test
  56. image: ${CI_DOCKER_REGISTRY}/qemu:esp-develop-20191124
  57. tags:
  58. - build
  59. - internet
  60. script:
  61. - cd $CI_PROJECT_DIR/test
  62. - export QEMU_PATH=/opt/qemu/bin/qemu-system-xtensa
  63. - ./run_test.sh qemu
  64. - ./run_test.sh host
  65. push_to_the_components_registry:
  66. stage: deploy
  67. image: python:3.10-alpine
  68. tags:
  69. - build
  70. - internet
  71. rules:
  72. - if: '$CI_COMMIT_BRANCH == "master"'
  73. - if: '$FORCE_PUSH_COMPONENT == "1"'
  74. script:
  75. - pip install idf-component-manager
  76. - python -m idf_component_manager upload-component --allow-existing --name=esp-serial-flasher --namespace=espressif