.gitlab-ci.yml 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. stages:
  2. - build
  3. - test
  4. variables:
  5. IDF_REPO: ${IDF_GIT_SERVER}/espressif/esp-idf.git
  6. STM32_CUBE_F4_REPO: https://github.com/STMicroelectronics/STM32CubeF4
  7. SERIAL_FLASHER_REPO: ${GITLAB_SSH_SERVER}/espressif/esp-serial-flasher.git
  8. QEMU_PATH: /opt/qemu/bin/qemu-system-xtensa
  9. .clone_and_setup_idf: &clone_and_setup_idf |
  10. cit_add_ssh_key "${GITLAB_KEY}"
  11. git clone "${IDF_REPO}"
  12. cd esp-idf
  13. tools/idf_tools.py --non-interactive install all && eval "$(tools/idf_tools.py --non-interactive export)" || exit 1
  14. git submodule update --init
  15. export IDF_PATH=$(pwd)
  16. .clone_and_setup_stm32: &clone_and_setup_stm32 |
  17. cd $CI_PROJECT_DIR
  18. git submodule update --init
  19. git clone "${STM32_CUBE_F4_REPO}"
  20. mkdir $CI_PROJECT_DIR/examples/stm32_example/build
  21. 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'
  22. tar -xjf gcc-arm-none-eabi.tar.bz2
  23. mv gcc-arm-none-eabi-* gcc-arm-none-eabi
  24. before_script:
  25. # Use CI Tools
  26. - curl -sSL ${CIT_LOADER_URL} | sh
  27. - source citools/import_functions
  28. - PATH=$CI_PROJECT_DIR/esp-idf/tools:$PATH
  29. build_with_idf:
  30. stage: build
  31. image: ${CI_DOCKER_REGISTRY}/esp32-ci-env
  32. tags:
  33. - build
  34. - internet
  35. script:
  36. - *clone_and_setup_idf
  37. - cd $CI_PROJECT_DIR/examples/esp32_example
  38. # Build for all supported targets
  39. - idf.py build -DTARGET_SOC=ESP32 -DMD5_ENABLED=1
  40. - idf.py build -DTARGET_SOC=ESP8266 -DMD5_ENABLED=0
  41. - idf.py build -DTARGET_SOC=ESP32_S2 -DMD5_ENABLED=1
  42. - *clone_and_setup_stm32
  43. - cd $CI_PROJECT_DIR/examples/stm32_example/build
  44. - cmake -DTOOLCHAIN_PREFIX=$CI_PROJECT_DIR/gcc-arm-none-eabi -DSTM32Cube_DIR=$CI_PROJECT_DIR/STM32CubeF4 .. && cmake --build .
  45. run_tests:
  46. stage: test
  47. image: ${CI_DOCKER_REGISTRY}/qemu:esp-develop-20191124
  48. tags:
  49. - build
  50. - internet
  51. script:
  52. - cd $CI_PROJECT_DIR/test
  53. - dd if=/dev/zero bs=1024 count=4096 of="empty_file.bin"
  54. # Run QEMU in backround (deamonized)
  55. - ${QEMU_PATH}
  56. -daemonize
  57. -machine esp32
  58. -drive file=empty_file.bin,if=mtd,format=raw
  59. -global driver=esp32.gpio,property=strap_mode,value=0x0f
  60. -serial tcp::5555,server,nowait
  61. - cd $CI_PROJECT_DIR/test && mkdir build && cd build
  62. # Compile and run qemu tests
  63. - cmake .. -DQEMU_TEST=True && make && ./serial_flasher_test
  64. # Compile and run host tests
  65. - cmake .. -DQEMU_TEST=False && make && ./serial_flasher_test