dist: trusty sudo: true # language: c # env: global: - IDE_VERSION=1.8.9 matrix: - BOARD="multi4in1:avr:multiatmega328p:bootloader=none" - BOARD="multi4in1:avr:multiatmega328p:bootloader=optiboot" - BOARD="multi4in1:avr:multixmega32d4" - BOARD="multi4in1:STM32F1:multistm32f103c:debug_option=none" - BOARD="multi4in1:STM32F1:multistm32f103c:debug_option=native" - BOARD="multi4in1:STM32F1:multistm32f103c:debug_option=ftdi" # notifications: email: false # before_install: # # Fetch the tag information for the current branch - git fetch origin --tags # # Publish the buildroot script folder - chmod +x ${TRAVIS_BUILD_DIR}/buildroot/bin/* - export PATH=${TRAVIS_BUILD_DIR}/buildroot/bin/:${PATH} # # Install Arduino IDE - wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz - tar xf arduino-$IDE_VERSION-linux64.tar.xz - mv arduino-$IDE_VERSION $HOME/arduino-ide - export PATH=$PATH:$HOME/arduino-ide # Set the Multi boards package URL - arduino --pref "boardsmanager.additional.urls=https://raw.githubusercontent.com/pascallanger/DIY-Multiprotocol-TX-Module-Boards/master/package_multi_4in1_board_index.json" --save-prefs # - if [[ "$BOARD" =~ "multi4in1:STM32F1:" ]]; then arduino --install-boards multi4in1:STM32F1; fi # - if [[ "$BOARD" =~ "multi4in1:avr:" ]]; then arduino --install-boards multi4in1:avr; fi # - buildMulti() { exitcode=0; BUILDCMD="arduino --verify --board $BOARD Multiprotocol/Multiprotocol.ino --pref build.path=./build/"; echo $BUILDCMD; $BUILDCMD; if [ $? -ne 0 ]; then exitcode=1; fi; echo; return $exitcode; } - buildProtocol() { exitcode=0; opt_disable $ALL_PROTOCOLS; opt_enable $1; buildMulti; if [ $? -ne 0 ]; then exitcode=1; fi; return $exitcode; } - buildEachProtocol() { exitcodesum=0; for PROTOCOL in $ALL_PROTOCOLS ; do echo Building $PROTOCOL; buildProtocol $PROTOCOL; if [ $? -ne 0 ]; then exitcodesum=$((exitcodesum + 1)); fi; done; return $exitcodesum; } # # Arduino IDE adds a lot of noise caused by network traffic; firewall it - sudo iptables -P INPUT DROP - sudo iptables -P FORWARD DROP - sudo iptables -P OUTPUT ACCEPT - sudo iptables -A INPUT -i lo -j ACCEPT - sudo iptables -A OUTPUT -o lo -j ACCEPT - sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # install: true before_script: # # Change current working directory to the build dir - cd ${TRAVIS_BUILD_DIR} # Log the initial Multi config - cat Multiprotocol/_Config.h # Back up the configuration - cp Multiprotocol/_Config.h ./_Config.h.bak # Derive the Multi protocols from the Multi source - A7105_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_A7105_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) - CC2500_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_CC2500_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) - CYRF6936_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_CYRF6936_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) - NRF24L01_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_NRF24L01_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) - if [[ "$BOARD" =~ "multi4in1:avr:multixmega32d4" ]]; then ALL_PROTOCOLS=$(echo $CYRF6936_PROTOCOLS); else ALL_PROTOCOLS=$(echo $A7105_PROTOCOLS $CC2500_PROTOCOLS $CYRF6936_PROTOCOLS $NRF24L01_PROTOCOLS); fi - echo $ALL_PROTOCOLS # # Disable CHECK_FOR_BOOTLOADER when not needed - if [[ "$BOARD" == "multi4in1:avr:multiatmega328p:bootloader=none" ]]; then opt_disable CHECK_FOR_BOOTLOADER; fi # # Trim the build down for the Atmega328p board - if [[ "$BOARD" =~ "multi4in1:avr:multiatmega328p:" ]]; then opt_disable $ALL_PROTOCOLS; opt_enable FRSKYX_CC2500_INO AFHDS2A_A7105_INO MJXQ_NRF24L01_INO DSM_CYRF6936_INO; fi # script: # Build with all protocols enabled for STM32; a subset of protocols for Atmega - buildMulti # # Serial only - opt_disable ENABLE_PPM - opt_enable ENABLE_SERIAL - buildMulti # # PPM only - opt_enable ENABLE_PPM - opt_disable ENABLE_SERIAL - buildMulti # # Re-enable PPM and serial - opt_enable ENABLE_SERIAL - opt_enable ENABLE_PPM # # Build each protocol individually - buildEachProtocol before_deploy: # Create somwhere to put the binaries - mkdir ./binaries # Restore the default configuration - cp ./_Config.h.bak Multiprotocol/_Config.h # Build the release files for OrangeRX - if [[ "$BOARD" == "multi4in1:avr:multixmega32d4" ]]; then opt_enable $ALL_PROTOCOLS; opt_disable ORANGE_TX_BLUE; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-orangerx-green-inv-$TRAVIS_TAG.hex; opt_enable ORANGE_TX_BLUE; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-orangerx-blue-inv-$TRAVIS_TAG.hex; fi # Build the release files for AVR without bootloader - if [[ "$BOARD" == "multi4in1:avr:multiatmega328p:bootloader=none" ]]; then opt_disable CHECK_FOR_BOOTLOADER; opt_disable $ALL_PROTOCOLS; opt_enable $A7105_PROTOCOLS; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-avr-usbasp-A7105-inv-$TRAVIS_TAG.hex; opt_disable $ALL_PROTOCOLS; opt_enable $CC2500_PROTOCOLS; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-avr-usbasp-CC2500-inv-$TRAVIS_TAG.hex; opt_disable $ALL_PROTOCOLS; opt_enable $CYRF6936_PROTOCOLS; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-avr-usbasp-CYRF6936-inv-$TRAVIS_TAG.hex; fi # Build the release files for AVR with bootloader - if [[ "$BOARD" == "multi4in1:avr:multiatmega328p:bootloader=optiboot" ]]; then opt_enable CHECK_FOR_BOOTLOADER; opt_disable $ALL_PROTOCOLS; opt_enable $A7105_PROTOCOLS; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-avr-txflash-A7105-inv-$TRAVIS_TAG.hex; opt_disable $ALL_PROTOCOLS; opt_enable $CC2500_PROTOCOLS; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-avr-txflash-CC2500-inv-$TRAVIS_TAG.hex; opt_disable $ALL_PROTOCOLS; opt_enable $CYRF6936_PROTOCOLS; buildMulti; mv build/Multiprotocol.ino.hex ./binaries/multi-avr-txflash-CYRF6936-inv-$TRAVIS_TAG.hex; fi # Build the release files for STM32 without debug - if [[ "$BOARD" == "multi4in1:STM32F1:multistm32f103c:debug_option=none" ]]; then opt_enable CHECK_FOR_BOOTLOADER; opt_enable $ALL_PROTOCOLS; opt_enable MULTI_STATUS; opt_disable MULTI_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-erskytx-inv-$TRAVIS_TAG.bin; opt_disable INVERT_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-erskytx-noinv-$TRAVIS_TAG.bin; opt_disable MULTI_STATUS; opt_enable MULTI_TELEMETRY; opt_enable INVERT_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-opentx-inv-$TRAVIS_TAG.bin; opt_disable INVERT_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-opentx-noinv-$TRAVIS_TAG.bin; fi # Build the release files for STM32 with Native USB debugging - if [[ "$BOARD" == "multi4in1:STM32F1:multistm32f103c:debug_option=native" ]]; then opt_enable CHECK_FOR_BOOTLOADER; opt_enable $ALL_PROTOCOLS; opt_enable MULTI_STATUS; opt_disable MULTI_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-erskytx-inv-usbdebug-$TRAVIS_TAG.bin; opt_disable MULTI_STATUS; opt_enable MULTI_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-opentx-inv-usbdebug-$TRAVIS_TAG.bin; fi # Build the release files for STM32 with FTDI USB debugging - if [[ "$BOARD" == "multi4in1:STM32F1:multistm32f103c:debug_option=ftdi" ]]; then opt_enable CHECK_FOR_BOOTLOADER; opt_enable $ALL_PROTOCOLS; opt_enable MULTI_STATUS; opt_disable MULTI_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-erskytx-inv-ftdidebug-$TRAVIS_TAG.bin; opt_disable MULTI_STATUS; opt_enable MULTI_TELEMETRY; buildMulti; mv build/Multiprotocol.ino.bin ./binaries/multi-stm-opentx-inv-ftdidebug-$TRAVIS_TAG.bin; fi deploy: provider: releases api_key: secure: KGXaoqvd8rbZ3AZtL9Rrn1JYiocGsPaihRUyR8gM8vTfvH9WYAE1+h6SzROQOuJSwr89MvTo3SBOTlM/0PDBnEGLec9Irt7cwO0xf9xM2vPuUG8DYcUzmJJzME9dkn/7qHof1JGgRpp1duUAN1triE9NxhKxL1hbs+tUUbDPAejxwoFNfnta/T4PfD6xmkZNJbneIfYFuFgyLpwwFhuUy9JP7s1AFOiT+fCHxPaZrPn5GsXqAi95Cb7Q3w1iVSt3BmrGxL2j3CeNpWzFY1RrMdc8ay+ppOhSPEIl2vyM7VeLRRBL3EVeFWkiS4ywevqw70wOivTczluv3OeuIJAe5o2UU+w5+59c7+i44Nih23PDAZBhAG5JkLUYUN0XUJpXJ5ZlZsb8IS8sI1txlZa5tNVoXO9+soGEY4rKSpZaPptuENm792CzzAjcaUI9pOFJ/0CBoSCbu5MpM/plkJCMd8fY27EE8cNYvolMuRATNlXs7h9mURGR69pmcR1jFShH+A7Kyp1S1sH19sGCEU16rt2aAtf2FadFg/gKACC2y9rB3wBb4Qnapu2AwNRlTYNuU1+G+kb2FXRwMl04q+38S+cIBHH9NHfdftp9MRPf8Ekatojs92be/Ux21S+hcA7sx/DV22Dl45V6l4mXzR7U4x1nQcdn1SGuy5I4lL6IYCk= skip_cleanup: true file_glob: true file: binaries/* on: tags: true