Browse Source

ci: github actions

- remove .travis.yml
- ./travis_{script,install}.sh -> ./ci_{script,install}.sh
- flush stdout in test script to see logs more promptly
- adjust git config to ignore 'detachedHead' warnings
mcspr-patch-1
Maxim Prokhorov 3 years ago
parent
commit
f11468abba
5 changed files with 75 additions and 76 deletions
  1. +47
    -0
      .github/workflows/push.yml
  2. +0
    -61
      .travis.yml
  3. +13
    -7
      ci_install.sh
  4. +12
    -6
      ci_script.sh
  5. +3
    -2
      code/scripts/test_build.py

+ 47
- 0
.github/workflows/push.yml View File

@ -0,0 +1,47 @@
# Normal push, check the build status for the nighly builder or the release
name: ESPurna build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.x'
architecture: x64
- uses: actions/setup-node@v2
with:
node-version: '14'
- name: Cache Node
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-${{ hashFiles('code/package-lock.json', 'code/package.json') }}
- name: Cache PlatformIO
uses: actions/cache@v2
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('code/platformio.ini') }}
- name: Host tests
run: |
./ci_install.sh host
./ci_script.sh host
- name: WebUI tests
run: |
./ci_install.sh webui
./ci_script.sh webui
- name: PlatformIO build
env:
BUILDER_TOTAL_THREADS: 4
ESPURNA_PIO_PATCH_ISSUE_1610: "y"
ESPURNA_PIO_SHARED_LIBRARIES: "y"
TEST_ENV: "esp8266-4m-latest-base"
TEST_EXTRA_ARGS: "-a test/build/extra/secure_client.h"
run: |
git config --global advice.detachedHead false
./ci_install.sh build
./ci_script.sh build

+ 0
- 61
.travis.yml View File

@ -1,61 +0,0 @@
os: linux
language: python
python:
- '3.8'
cache:
directories:
- ~/.npm
- ~/.platformio
env:
global:
- BUILDER_TOTAL_THREADS=4
- ESPURNA_PIO_PATCH_ISSUE_1610=y
- ESPURNA_PIO_SHARED_LIBRARIES=y
install:
- ./travis_install.sh
script:
- ./travis_script.sh
stages:
- name: Test Host
if: tag IS NOT present
- name: Test WebUI
if: tag IS NOT present
- name: Test PlatformIO Build
if: tag IS NOT present
- name: Release
if: tag IS present AND tag =~ ^\d+\.\d+\.\d+$
jobs:
include:
- stage: Test Host
- stage: Test WebUI
- stage: Test PlatformIO Build
env: >-
TEST_ENV=esp8266-4m-latest-base TEST_EXTRA_ARGS="-a
test/build/extra/secure_client.h"
- stage: Release
env: BUILDER_THREAD=0
- env: BUILDER_THREAD=1
- env: BUILDER_THREAD=2
- env: BUILDER_THREAD=3
before_deploy:
- mkdir -p firmware/
- mv firmware/*/espurna-*.bin firmware/
deploy:
provider: releases
api_key:
secure: >-
LMCdaQnCxSQ5EuKhqcFR6VTfDCWc06jwD4fdHfkmBaeWBMMzdoZEqN26AwdTnoLLlQJTR9l21NypgGybssBr69Md/ZinMahWCJJ4gVzPe9Adr9ijRbzj/wckirLBVZjRWn8fxTjJgjpu1ten2CgBfNcc/roN3fI6DV/1Fvv1REfihND4EeIermsxIVRXOyluu1vnPV9ZM28XBNch9XfkKwIpLEaHNNtkzlSEua39U34WpZShrxxEVoZhiF/R1ZF+NiAnursPcPsn5hdrXyHFLFT2dVDnlpdIp79c6SGkCZ636//5erB6hgBHshbwuT9TYXxtwLyL7AeN/MfCg0gtZSsDII8mLKzytW1tl7r1W9l7s21z/55tljSz2Z6dcbJC3bxucgcLxM9R6PrsPdDrPQTd0QwYqYalMNlfuA8KGcesZueqI9Q4uw7uHFUwIp7FIaoKhwhjTKe/ZHZ75zU4wdBTXof4dnSQOudoGGjRyyj7V0eR/Mhuni45N2Bldy9hDaldgtWMuEdx3ABW1IrPXtPDVTXM6QjUHm0nj5zzCgoCvQEw3jycA7Wlgbzo8MQkKH3u4MtupJcEGHJAqMbk+JlRpIfdWTiqtI697CReRGYSWT6YxF68TeJo77JPPph724BIBMtKtIk2+4RkHxz5RqM8O2vt+AFNjnWNIvVQtY8=
file_glob: true
file: firmware/espurna-*.bin
on:
tags: true
repo: xoseperez/espurna
condition: $TRAVIS_BUILD_STAGE_NAME = Release
notifications:
pushover:
api_key:
secure: >-
wtAleSibUqDOH7KskYMIFXwNqqZMA/2flCJzu835hSFWDFTjdXGeYLmQxCI7FGTWHcvWgf5pt3KR3OXtABVDfwqLj0HZjEubIypm56mZKsEaP32JlQiAw+Qz1KSU/5gEKEI3NU5MuL1rIebSEo9iVgwVDMn51GI9qv0LbjLKfXpxBmJXL/OmBRggVMswScCppXJLVlyMSRj9qT0Ds/lz+SL1g6vZHPO8r3z1BSOMA0eWNUYd/Huhe1XAHYzS4mS3aybPsPKldpv0igsvE5BHT37rb43QA0pHxv2M09QlBRNBI6kHgxzCw2OJ4uz5/K2U/4LBMDJrAj6rUGAhKn8Wuiw4B/kZb+WsvRCcCTHGYTc20KWrrV4aOojQRLht1FgNg7Ub+NNm5T9LBG+XKKHARTv1Kv09nCpPVD8NvF5YPRsSb7ZL6s/wUGSNuu365aVs3BnnazXb+ha33Hg0bCBEwmlW6FKdQ7S8OYsoIobTUcporRs8p089EQ8vNxN0osHnKPX5M0ZOxbBOIt5fQO2B+Cdn+m4hx/DETM5HMLZ/GpsbY9eiN7HWaaQPicSrSLprY6tzfvcHePk9Y6t8rjCKzehwlYtrfiMRvrPhZuOLcB4s3OmJngxvOCGxdWkh/6F2CY6sDslyviaK0ZwX93Gn7uNThAviFpZNUlPWP6jHIkA=
users:
secure: >-
atCRvGYPuAT1DH5UupNIV80sqrIgwdYrxO69tq+lIBfi3BIJ4LLlvUQwigWak6otfJbEqAQKVNi8I8J4g7ASHx1wn335vpAqLAbhJqfbLznAcU9nZ+bdc8+NJ57qY66ZZJNpljbMC0HWgw2kgyiCLJ1wS3zsQAyuzyGuMcmc43zFOQMA7QUaefE6LGlHPn0i6Ub04QgQ1413IEu2/FR5i4hVXrgRQzaPy07pSPbvFTvoxfWDgWjTQM+R2AG8uStesO+2yzeb8Nu2pJDvFf3R1N8P2e3zg5YN86DLNRQ+Kxl7M1FJ/txbJ/4D1jdNwAmtUzEoYnsKCcCnMHWGuSlJF8fgXSVBDi9KVH7Y6rlWXzMcqesR5lzNTlD7JQ01yw2WrO6Nj7fvan+QNGp3d5F4Kf3WE+5rkmM5Sbo5rb9YOGt688i1qJ3Xf1MTkQNCzDiAg3qf1hu8j+AALblY73gNSAgv4F+/SnmnfKy5Cz/oRQQfboiC/VphNa25Fzq3s3uahQfLha4tyHrc1LltSM6bztErRSPqDp96qVTQORVHr6jqJhl6c9R0XXrnc0Pc5lpBoPKOqug1yPp15k9AAssGxtXZqg2loHjwmS+Qm1i77mNGKNhzqDpmLHEzmIejc4n4lIZmze+dLucStiNnkN6TF3nvIh37CNjH6slT5t7WfJg=

travis_install.sh → ci_install.sh View File

@ -8,23 +8,29 @@ npm_install() {
}
pio_install() {
pip install -U platformio
pip3 install -U platformio
pio upgrade --dev
pio platform update -p
}
cd code
if [ "${TRAVIS_BUILD_STAGE_NAME}" = "Test Host" ]; then
case "$1" in
("host")
pio_install
elif [ "${TRAVIS_BUILD_STAGE_NAME}" = "Test WebUI" ]; then
;;
("webui")
npm_install
elif [ "${TRAVIS_BUILD_STAGE_NAME}" = "Test PlatformIO Build" ]; then
;;
("build")
pio_install
elif [ "${TRAVIS_BUILD_STAGE_NAME}" = "Release" ]; then
;;
("release")
npm_install
pio_install
else
;;
(*)
echo -e "\e[1;33mUnknown stage name, exiting!\e[0m"
exit 1
fi
;;
esac

travis_script.sh → ci_script.sh View File

@ -4,16 +4,22 @@ set -x -e -v
cd code
if [ "${TRAVIS_BUILD_STAGE_NAME}" = "Test Host" ]; then
case "$1" in
("host")
cd test/ && pio test
elif [ "${TRAVIS_BUILD_STAGE_NAME}" = "Test WebUI" ]; then
;;
("webui")
./build.sh -f environments
elif [ "${TRAVIS_BUILD_STAGE_NAME}" = "Test PlatformIO Build" ]; then
;;
("build")
# shellcheck disable=SC2086
scripts/test_build.py -e "$TEST_ENV" $TEST_EXTRA_ARGS
elif [ "${TRAVIS_BUILD_STAGE_NAME}" = "Release" ]; then
;;
("release")
./build.sh -r
else
;;
(*)
echo -e "\e[1;33mUnknown stage name, exiting!\e[0m"
exit 1
fi
;;
esac

+ 3
- 2
code/scripts/test_build.py View File

@ -62,7 +62,7 @@ def run_configurations(args, configurations):
cmd.extend(["-e", args.environment])
for cfg in configurations:
print(clr(Color.BOLD, "> Building {}".format(cfg)))
print(clr(Color.BOLD, "> Building {}".format(cfg)), flush=True)
with open(args.custom_h, "w") as custom_h:
def write(line):
@ -100,7 +100,8 @@ def run_configurations(args, configurations):
).st_size,
datetime.timedelta(seconds=diff),
),
)
),
flush=True,
)


Loading…
Cancel
Save