Skip to content

Prepare my build.config for custom build #56473

Prepare my build.config for custom build

Prepare my build.config for custom build #56473

Workflow file for this run

name: NodeMCU Custom Build
on:
push:
branches:
- master
- builds
pull_request:
branches:
- master
- builds
defaults:
run:
shell: bash
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Log the build config
run: cat build.config
# When you run a script it gets its own shell and its own environment, which disappear again as soon as the
# script is finished. Besides, each step uses its own environment with no shared global space for dynamic env
# variables. Work-around: write "export FOO=bar" entries to a file and source it in every step that needs those.
# Idea: https://github.com/actions/starter-workflows/issues/68#issuecomment-642514933
- name: Prepare environment variables
run: ./export-env-vars.sh
- name: Upload artifact '.env-vars'
uses: actions/upload-artifact@v4
with:
name: env-vars
path: ./.env-vars
retention-days: 5
include-hidden-files: true
- name: Trigger sending the start-build email
run: |
source ./.env-vars
wget -d -v -O/dev/null --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused 'https://nodemcu-build.com/hook.php?event=start&recipient='${X_EMAIL//+/%2B}
- name: Determine Python version
run: |
source ./.env-vars
echo "python_version=3.8" >> $GITHUB_ENV
if [ "$X_BRANCH" = "1.5.4.1-final" ]; then echo "python_version=2.7" >> $GITHUB_ENV; fi
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ env.python_version }}
- name: Install Python dependencies
run: python -m pip install --upgrade pip
- name: Install APT dependencies
run: sudo apt install python3-serial srecord gperf
- name: Clone NodeMCU repo
run: |
source ./.env-vars
git clone --depth=1 --branch=$X_BRANCH --recursive https://github.com/nodemcu/nodemcu-firmware nodemcu-firmware
ls -alrt
cd nodemcu-firmware
ls -altr
- name: Cache the 'cache' dir
uses: actions/cache@v2
env:
cache-name: cache-artifacts
with:
path: ./nodemcu-firmware/cache
key: ${{ runner.os }}
- name: Run install.sh
run: |
source ./.env-vars
cd nodemcu-firmware
if [ "$X_BRANCH" = "dev-esp32-idf3-final" ]; then bash "$GITHUB_WORKSPACE"/ESP32/install.sh; else bash "$GITHUB_WORKSPACE"/ESP8266/install.sh; fi
- name: Run before-script.sh
run: |
source ./.env-vars
cd nodemcu-firmware
if [ "$X_BRANCH" = "dev-esp32-idf3-final" ]; then bash "$GITHUB_WORKSPACE"/ESP32/before-script.sh; else bash "$GITHUB_WORKSPACE"/ESP8266/before-script.sh; fi
- name: Run script.sh
run: |
source ./.env-vars
cd nodemcu-firmware
if [ "$X_BRANCH" = "dev-esp32-idf3-final" ]; then bash "$GITHUB_WORKSPACE"/ESP32/script.sh; else bash "$GITHUB_WORKSPACE"/ESP8266/script.sh; fi
- name: Upload artifacts in 'nodemcu-firmware/bin'
uses: actions/upload-artifact@v4
with:
name: bin-folder
path: nodemcu-firmware/bin
retention-days: 5
upload:
needs: build
runs-on: ubuntu-20.04
steps:
- name: Download artifacts 'nodemcu-firmware/bin' from build job
uses: actions/download-artifact@v4
with:
name: bin-folder
- name: Download artifact '.env-vars' from build job
uses: actions/download-artifact@v4
with:
name: env-vars
- name: Archive binaries on nodemcu-build.com
env:
TOKEN: ${{ secrets.ARCHIVER_TOKEN }}
run: |
ls -alrt
file_name_float=$(find . -name "nodemcu-*float*.bin" -type f -exec basename {} \;)
file_name_integer=$(find . -name "nodemcu-*integer*.bin" -type f -exec basename {} \;)
echo "export file_name_float=""$file_name_float""" >> ./.env-vars
echo "export file_name_integer=""$file_name_integer""" >> ./.env-vars
curl --connect-timeout 10 --max-time 120 --retry 5 --retry-delay 10 -F token=$TOKEN -F file=@$file_name_float https://nodemcu-build.com/archiver.php
curl --connect-timeout 10 --max-time 120 --retry 5 --retry-delay 10 -F token=$TOKEN -F file=@$file_name_integer https://nodemcu-build.com/archiver.php
- name: Upload artifact '.env-vars'
uses: actions/upload-artifact@v4
with:
name: env-vars
path: ./.env-vars
retention-days: 5
overwrite: true
include-hidden-files: true
notify:
needs: upload
runs-on: ubuntu-20.04
if: always()
steps:
# You can get conclusion via ${{ env.WORKFLOW_CONCLUSION }} # neutral, success, skipped, cancelled, timed_out, action_required, failure
- uses: technote-space/workflow-conclusion-action@v2
- name: Download artifact '.env-vars' from build and upload jobs
uses: actions/download-artifact@v4
with:
name: env-vars
- name: Trigger sending success email to author
if: env.WORKFLOW_CONCLUSION == 'success'
run: |
source ./.env-vars
wget -d -v -O/dev/null --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused 'https://nodemcu-build.com/hook.php?event=success&recipient='${X_EMAIL//+/%2B}'&branch='$X_BRANCH'&modules='$X_MODULES'&artifacts='${file_name_float},${file_name_integer}
- name: Trigger sending failure email to author
if: env.WORKFLOW_CONCLUSION == 'failure'
run: |
source ./.env-vars
wget -d -v -O/dev/null --tries=10 --timeout=15 --waitretry=30 --read-timeout=20 --retry-connrefused 'https://nodemcu-build.com/hook.php?event=failure&recipient='${X_EMAIL//+/%2B}