From a4a4cfbb2396a1c7ed7a842e6874140d5984bc8e Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 15 Jun 2020 22:26:43 +0200 Subject: [PATCH] travis fixes for v2 --- .travis.yml | 4 +- scripts/build.sh | 338 +++++++++++++++++++++++------------------------ 2 files changed, 171 insertions(+), 171 deletions(-) diff --git a/.travis.yml b/.travis.yml index b1093fad4..38c701061 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,7 +53,7 @@ deploy: token: ${GITHUB_TOKEN} file_glob: true file: "*.bin" - name: latest v2 development build + name: latest v2 development builds release_notes: Version $FIRMWARE_VERSION. Automatic firmware builds of the current EMS-ESP branch built on $(date +'%F %T %Z') from commit $TRAVIS_COMMIT. @@ -64,7 +64,7 @@ deploy: target_commitish: $TRAVIS_COMMIT on: tags: false - branch: dev + branch: v2 notifications: email: diff --git a/scripts/build.sh b/scripts/build.sh index 336434b96..a6673849e 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,169 +1,169 @@ -#!/bin/bash -set -e - -### Functions - -is_git() { - command -v git >/dev/null 2>&1 || return 1 - command git rev-parse >/dev/null 2>&1 || return 1 - - return 0 -} - -stat_bytes() { - filesize=`du -k "$1" | cut -f1;` - echo 'size:' $filesize 'bytes' -} - -# Available environments -list_envs() { - grep env: platformio.ini | sed 's/\[env:\(.*\)\]/\1/g' -} - -print_available() { - echo "--------------------------------------------------------------" - echo "Available environments:" - for environment in $available; do - echo "-> $environment" - done -} - -print_environments() { - echo "--------------------------------------------------------------" - echo "Current environments:" - for environment in $environments; do - echo "-> $environment" - done -} - -set_default_environments() { - # Hook to build in parallel when using travis - if [[ "${TRAVIS_BUILD_STAGE_NAME}" = "Release" ]] && ${par_build}; then - environments=$(echo ${available} | \ - awk -v par_thread=${par_thread} -v par_total_threads=${par_total_threads} \ - '{ for (i = 1; i <= NF; i++) if (++j % par_total_threads == par_thread ) print $i; }') - return - fi - - # Only build travis target - if [[ "${TRAVIS_BUILD_STAGE_NAME}" = "Test" ]]; then - environments=$travis - return - fi - - # Fallback to all available environments - environments=$available -} - -build_environments() { - echo "--------------------------------------------------------------" - echo "Building firmware images..." - # don't move to firmware folder until Travis fixed (see https://github.com/travis-ci/dpl/issues/846#issuecomment-547157406) - # mkdir -p $destination - - for environment in $environments; do - echo "* EMS-ESP-$version-$environment.bin" - platformio run --silent --environment $environment || exit 1 - stat_bytes .pio/build/$environment/firmware.bin - # mv .pio/build/$environment/firmware.bin $destination/EMS-ESP-$version-$environment.bin - # mv .pio/build/$environment/firmware.bin EMS-ESP-$version-$environment.bin - mv .pio/build/$environment/firmware.bin EMS-ESP-dev-$environment.bin - done - echo "--------------------------------------------------------------" -} - - -####### MAIN - -destination=firmware -version_file=./src/version.h -version=$(grep -E '^#define EMSESP_APP_VERSION' $version_file | awk '{print $3}' | sed 's/"//g') - -if ${TRAVIS:-false}; then - git_revision=${TRAVIS_COMMIT::7} - git_tag=${TRAVIS_TAG} -elif is_git; then - git_revision=$(git rev-parse --short HEAD) - git_tag=$(git tag --contains HEAD) -else - git_revision=unknown - git_tag= -fi - -echo $git_tag - -if [[ -n $git_tag ]]; then - new_version=${version/-*} - sed -i -e "s@$version@$new_version@" $version_file - version=$new_version - trap "git checkout -- $version_file" EXIT -fi - -par_build=false -par_thread=${BUILDER_THREAD:-0} -par_total_threads=${BUILDER_TOTAL_THREADS:-4} -if [ ${par_thread} -ne ${par_thread} -o \ - ${par_total_threads} -ne ${par_total_threads} ]; then - echo "Parallel threads should be a number." - exit -fi -if [ ${par_thread} -ge ${par_total_threads} ]; then - echo "Current thread is greater than total threads. Doesn't make sense" - exit -fi - -# travis platformio target is used for nightly Test -travis=$(list_envs | grep travis | sort) - -# get all taregts, excluding travis and debug -available=$(list_envs | grep -Ev -- 'travis|debug|release' | sort) - -export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS}" - -# get command line Parameters -# l prints environments -# 2 does parallel builds -# d uses next arg as destination folder -while getopts "lpd:" opt; do - case $opt in - l) - print_available - exit - ;; - p) - par_build=true - ;; - d) - destination=$OPTARG - ;; - esac -done - -shift $((OPTIND-1)) - -# Welcome message -echo "--------------------------------------------------------------" -echo "EMS-ESP FIRMWARE BUILDER" -echo "Building for version ${version}" ${git_revision:+($git_revision)} - -# Environments to build -environments=$@ - -if [ $# -eq 0 ]; then - set_default_environments -fi - -if ${CI:-false}; then - print_environments -fi - -# for debugging -echo "* git_revision = $git_revision" -echo "* git_tag = $git_tag" -echo "* TRAVIS_COMMIT = $TRAVIS_COMMIT" -echo "* TRAVIS_TAG = $TRAVIS_TAG" -echo "* TRAVIS_BRANCH = $TRAVIS_BRANCH" -echo "* TRAVIS_BUILD_STAGE_NAME = $TRAVIS_BUILD_STAGE_NAME" - -build_environments - +#!/bin/bash +set -e + +### Functions + +is_git() { + command -v git >/dev/null 2>&1 || return 1 + command git rev-parse >/dev/null 2>&1 || return 1 + + return 0 +} + +stat_bytes() { + filesize=`du -k "$1" | cut -f1;` + echo 'size:' $filesize 'bytes' +} + +# Available environments +list_envs() { + grep env: platformio.ini | sed 's/\[env:\(.*\)\]/\1/g' +} + +print_available() { + echo "--------------------------------------------------------------" + echo "Available environments:" + for environment in $available; do + echo "-> $environment" + done +} + +print_environments() { + echo "--------------------------------------------------------------" + echo "Current environments:" + for environment in $environments; do + echo "-> $environment" + done +} + +set_default_environments() { + # Hook to build in parallel when using travis + if [[ "${TRAVIS_BUILD_STAGE_NAME}" = "Release" ]] && ${par_build}; then + environments=$(echo ${available} | \ + awk -v par_thread=${par_thread} -v par_total_threads=${par_total_threads} \ + '{ for (i = 1; i <= NF; i++) if (++j % par_total_threads == par_thread ) print $i; }') + return + fi + + # Only build travis target + if [[ "${TRAVIS_BUILD_STAGE_NAME}" = "Test" ]]; then + environments=$travis + return + fi + + # Fallback to all available environments + environments=$available +} + +build_environments() { + echo "--------------------------------------------------------------" + echo "Building firmware images..." + # don't move to firmware folder until Travis fixed (see https://github.com/travis-ci/dpl/issues/846#issuecomment-547157406) + # mkdir -p $destination + + for environment in $environments; do + echo "* EMS-ESP-$version-$environment.bin" + platformio run --silent --environment $environment || exit 1 + stat_bytes .pio/build/$environment/firmware.bin + # mv .pio/build/$environment/firmware.bin $destination/EMS-ESP-$version-$environment.bin + # mv .pio/build/$environment/firmware.bin EMS-ESP-$version-$environment.bin + mv .pio/build/$environment/firmware.bin EMS-ESP-dev-$environment.bin + done + echo "--------------------------------------------------------------" +} + + +####### MAIN + +destination=firmware +version_file=./src/version.h +version=$(grep -E '^#define EMSESP_APP_VERSION' $version_file | awk '{print $3}' | sed 's/"//g') + +if ${TRAVIS:-false}; then + git_revision=${TRAVIS_COMMIT::7} + git_tag=${TRAVIS_TAG} +elif is_git; then + git_revision=$(git rev-parse --short HEAD) + git_tag=$(git tag --contains HEAD) +else + git_revision=unknown + git_tag= +fi + +echo $git_tag + +if [[ -n $git_tag ]]; then + new_version=${version/-*} + sed -i -e "s@$version@$new_version@" $version_file + version=$new_version + trap "git checkout -- $version_file" EXIT +fi + +par_build=false +par_thread=${BUILDER_THREAD:-0} +par_total_threads=${BUILDER_TOTAL_THREADS:-4} +if [ ${par_thread} -ne ${par_thread} -o \ + ${par_total_threads} -ne ${par_total_threads} ]; then + echo "Parallel threads should be a number." + exit +fi +if [ ${par_thread} -ge ${par_total_threads} ]; then + echo "Current thread is greater than total threads. Doesn't make sense" + exit +fi + +# travis platformio target is used for nightly Test +travis=$(list_envs | grep travis | sort) + +# get all taregts, excluding travis and debug +available=$(list_envs | grep -Ev -- 'travis|debug|release' | sort) + +export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS}" + +# get command line Parameters +# l prints environments +# 2 does parallel builds +# d uses next arg as destination folder +while getopts "lpd:" opt; do + case $opt in + l) + print_available + exit + ;; + p) + par_build=true + ;; + d) + destination=$OPTARG + ;; + esac +done + +shift $((OPTIND-1)) + +# Welcome message +echo "--------------------------------------------------------------" +echo "EMS-ESP FIRMWARE BUILDER" +echo "Building for version ${version}" ${git_revision:+($git_revision)} + +# Environments to build +environments=$@ + +if [ $# -eq 0 ]; then + set_default_environments +fi + +if ${CI:-false}; then + print_environments +fi + +# for debugging +echo "* git_revision = $git_revision" +echo "* git_tag = $git_tag" +echo "* TRAVIS_COMMIT = $TRAVIS_COMMIT" +echo "* TRAVIS_TAG = $TRAVIS_TAG" +echo "* TRAVIS_BRANCH = $TRAVIS_BRANCH" +echo "* TRAVIS_BUILD_STAGE_NAME = $TRAVIS_BUILD_STAGE_NAME" + +build_environments +