mirror of
https://github.com/esp8266/Arduino.git
synced 2025-12-07 17:42:43 +03:00
Check that building the eboot.c block generates the same binary as the verison checked into the repo. Catches the case where a library or eboot.c file is changed, but an updated eboot.elf isn't included in a PR. Can't do simple binary diff of the ELFs because paths and compile times will change, so dump the two sections we care about.
267 lines
6.9 KiB
YAML
267 lines
6.9 KiB
YAML
# Run whenever a PR is generated or updated.
|
|
|
|
# Most jobs check out the code, ensure Python3 is installed, and for build
|
|
# tests the ESP8266 toolchain is cached when possible to speed up execution.
|
|
|
|
name: ESP8266 Arduino CI
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
|
|
jobs:
|
|
|
|
# Run 8 parallel jobs for the default build of all examples.
|
|
build-linux:
|
|
name: Build ${{ matrix.chunk }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
chunk: [0, 1, 2, 3, 4, 5, 6, 7]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Cache Linux toolchain
|
|
id: cache-linux
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ./tools/dist
|
|
key: key-linux-toolchain
|
|
- name: Build Sketches
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
BUILD_PARITY: custom
|
|
mod: 8
|
|
rem: ${{ matrix.chunk }}
|
|
run: |
|
|
bash ./tests/build.sh
|
|
|
|
|
|
# Cover the debug and IPv6 cases by enabling both and running 8 parallel jobs
|
|
# over all example code.
|
|
build-debug-ipv6:
|
|
name: Debug IPv6 ${{ matrix.chunk }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
chunk: [0, 1, 2, 3, 4, 5, 6, 7]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Cache Linux toolchain
|
|
id: cache-linux
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ./tools/dist
|
|
key: key-linux-toolchain
|
|
- name: Build Sketches
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
BUILD_PARITY: custom
|
|
mod: 8
|
|
rem: ${{ matrix.chunk }}
|
|
run: |
|
|
bash ./tests/debug6.sh
|
|
|
|
|
|
# Single build under Windows to ensure the Win toolchain is good.
|
|
build-windows:
|
|
name: Windows
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Cache Windows toolchain
|
|
id: cache-windows
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ./tools/dist
|
|
key: key-windows-toolchain
|
|
- name: Build Sketch
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
WINDOWS: 1
|
|
BUILD_PARITY: custom
|
|
mod: 500
|
|
rem: 1
|
|
run: |
|
|
# Windows has python3 already installed, but it's called "python".
|
|
# Copy python.exe to the proper name so scripts "just work".
|
|
copy (get-command python).source (get-command python).source.Replace("python.exe", "python3.exe")
|
|
bash ./tests/build.sh
|
|
|
|
|
|
# Single build under macOS to ensure the Mac toolchain is good.
|
|
build-mac:
|
|
name: Mac
|
|
runs-on: macOS-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Cache Mac toolchain
|
|
id: cache-mac
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ./tools/dist
|
|
key: key-mac-toolchain
|
|
- name: Build Sketch
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
MACOSX: 1
|
|
BUILD_PARITY: custom
|
|
mod: 500
|
|
rem: 1
|
|
run: |
|
|
bash ./tests/build.sh
|
|
|
|
|
|
# Run a few Platform.IO jobs (not full suite) to check PIO integration.
|
|
build-pio:
|
|
name: Build Platform.IO
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Build subset on Platform.IO
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
BUILD_PARITY: custom
|
|
mod: 42 # Picked at random to give 4-5 builds and exit.
|
|
rem: 13
|
|
run: |
|
|
sudo apt-get install python3-pip python3-setuptools
|
|
PATH=/home/runner/.local/bin:$PATH bash ./tests/platformio.sh
|
|
|
|
|
|
# Run host test suite under valgrind for runtime checking of code.
|
|
host-tests:
|
|
name: Host tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Run host tests
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
run: |
|
|
sudo apt-get install valgrind lcov
|
|
bash ./tests/ci/host_test.sh
|
|
|
|
|
|
# Ensure Sphinx can build the documentation properly.
|
|
documentation:
|
|
name: Documentation
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Build documentation
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
run: |
|
|
sudo apt-get install python3-pip python3-setuptools
|
|
# GitHub CI installs pip3 and setuptools outside the path.
|
|
# Update the path to include them and run.
|
|
PATH=/home/runner/.local/bin:$PATH pip3 install --user -r doc/requirements.txt
|
|
PATH=/home/runner/.local/bin:$PATH bash ./tests/ci/build_docs.sh
|
|
|
|
|
|
# Standard Arduino formatting in all the examples
|
|
style-check:
|
|
name: Style and formatting
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Style check
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
run: |
|
|
sudo apt-get install astyle
|
|
bash ./tests/ci/style_check.sh
|
|
|
|
|
|
# Quick test that the mocking builds succeed
|
|
mock-check:
|
|
name: Mock trivial test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Mock build
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
run: |
|
|
bash ./tests/buildm.sh
|
|
|
|
|
|
# Ensure no manual edits to boards.txt
|
|
boards-check:
|
|
name: Boards.txt check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
- name: Cache Linux toolchain
|
|
id: cache-linux
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ./tools/dist
|
|
key: key-linux-toolchain
|
|
- name: Boards.txt diff
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
run: |
|
|
bash ./tests/ci/build_boards.sh
|
|
bash ./tests/ci/eboot_test.sh
|