mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-10 01:58:11 +00:00
* Change build commands to make log a little easier to read * Create a backup of the _config.h file before starting * Add `before_deploy` and `deploy` sections to deploy compiled binaries when a release is tagged
178 lines
7.5 KiB
YAML
178 lines
7.5 KiB
YAML
dist: trusty
|
|
sudo: true
|
|
#
|
|
language: c
|
|
#
|
|
env:
|
|
global:
|
|
- IDE_VERSION=1.8.1
|
|
matrix:
|
|
- BOARD="multi4in1:STM32F1:multistm32f103c:upload_method=serialMethod"
|
|
- BOARD="multi4in1:STM32F1:multistm32f103c:upload_method=TxFlashMethod"
|
|
- BOARD="multi4in1:avr:multixmega32d4"
|
|
- BOARD="multi4in1:avr:multiatmega328p:bootloader=none"
|
|
- BOARD="multi4in1:avr:multiatmega328p:bootloader=optiboot"
|
|
#
|
|
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() { BUILDCMD="arduino --verify --board $BOARD Multiprotocol/Multiprotocol.ino --pref build.path=./build/"; echo $BUILDCMD; $BUILDCMD; echo; }
|
|
- buildProtocol() { opt_disable $ALL_PROTOCOLS; opt_enable $1; buildMulti; }
|
|
- buildEachProtocol() { exitcode=0; for PROTOCOL in $ALL_PROTOCOLS ; do echo Building $PROTOCOL; buildProtocol $PROTOCOL; if [ $? -ne 0 ]; then exitcode=1; fi; done; return $exitcode; }
|
|
#
|
|
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
|
|
#
|
|
# Enable CHECK_FOR_BOOTLOADER when needed
|
|
- if [[ "$BOARD" =~ ":upload_method=TxFlashMethod" ]] || [[ "$BOARD" =~ ":bootloader=optiboot" ]]; then
|
|
opt_enable 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 bootloader
|
|
- if [[ "$BOARD" =~ "multi4in1:STM32F1:multistm32f103c:upload_method=serialMethod" ]]; then
|
|
opt_disable CHECK_FOR_BOOTLOADER;
|
|
opt_enable $ALL_PROTOCOLS;
|
|
buildMulti;
|
|
mv build/Multiprotocol.ino.bin ./binaries/Multi-STM_FTDI_INV-$TRAVIS_TAG.hex;
|
|
opt_disable MULTI_STATUS;
|
|
opt_enable MULTI_TELEMETRY;
|
|
buildMulti;
|
|
mv build/Multiprotocol.ino.bin ./binaries/Multi-STM_FTDI_INV_OPENTX-$TRAVIS_TAG.hex;
|
|
fi
|
|
# Build the release files for STM32 with bootloader
|
|
- if [[ "$BOARD" =~ "multi4in1:STM32F1:multistm32f103c:upload_method=TxFlashMethod" ]]; then
|
|
opt_enable CHECK_FOR_BOOTLOADER;
|
|
opt_enable $ALL_PROTOCOLS;
|
|
buildMulti;
|
|
mv build/Multiprotocol.ino.bin ./binaries/Multi-STM_TXFLASH_INV-$TRAVIS_TAG.hex;
|
|
opt_disable MULTI_STATUS;
|
|
opt_enable MULTI_TELEMETRY;
|
|
buildMulti;
|
|
mv build/Multiprotocol.ino.bin ./binaries/Multi-STM_TXFLASH_INV_OPENTX-$TRAVIS_TAG.hex;
|
|
fi
|
|
deploy:
|
|
provider: releases
|
|
api_key:
|
|
secure: bk6IaUVPxvPwD7jk3IpfWazDCiaQBGNPSF+M61rpi79CZSDzSuLQh9DPLoVqM4HM7JMZMo6r5zNB24VN3p6a8CjI0ui01lkz92EuttAZ2bSPlwo9vasGI8UamJ7AHhI9ZYx22PdER/YA29mEV4JqxaZrh4FUcl8G5VNt0Q1ChP8nGKOU/ffSUm1NydXmK9P3OmPCy/yMHZOrBwbQ6g4vfHTZ1Phc00K2xcWqDTTznVIzdlYvdymM846lwCHJXcNmfgC9vIREWdozlUWiTaGGk/8bfU/dU0F8e0pCGwit+iRKbLLBeo4qKaVFOnHmUjUQ2DCehCEuwJ3TK5K1DfFqIjxOreyIgEFxbkMBjhFdQ3Hh0m8MpaVMwVsUQRz5xwcPE0/OqOuvzNeWtE6nBjh7lZN52ZENSfIOVmsBoBRR8snIh8uwjKOytHXz48mK5qzPAtE4IviE0dNvVk6ESA6n2TlpI8Yac11oneWruJbEOvhV/fDL3HTX71Y3fDdGvVJczQo5eUeZ9DqvwRbSrNOPU79oPa8zOcYVSzpjigOoVLOb9GhsGNSRUvVl/Ais97ZG4eLo5KSySzZ6yZ/8qIQwx4aNFNl2PruIWpzCsct94XX7QdCLN3h9Fy/ZPBlyyNd4h+6Wm6JmpIv7E3ZAE2w63OSLSgyMq2hmwUJ2ZdBeTdg=
|
|
skip_cleanup: true
|
|
file_glob: true
|
|
file: binaries/*
|
|
on:
|
|
tags: true
|