Fixes #171 Under Windows, it is very hard to make a symlink and by default git won't make one to the Arduino API directory, causing annoying build errors. Avoid the issue by duplicating the ArduinoAPI directory explicitly and using CI to verify that there are no differences between the two.
187 lines
5.2 KiB
YAML
187 lines
5.2 KiB
YAML
# Run whenever a PR is generated or updated.
|
|
|
|
|
|
name: Arduino-Pico CI
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
|
|
jobs:
|
|
|
|
# Me no spell so good
|
|
code-spell:
|
|
name: Check spelling
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Run codespell
|
|
uses: codespell-project/actions-codespell@master
|
|
with:
|
|
skip: ./pico-extras,./ArduinoCore-API,./libraries/SdFat,./libraries/Adafruit_TinyUSB_Arduino,./libraries/LittleFS/lib,./tools/pyserial,./pico-sdk,./.github,./docs/i2s.rst,./cores/rp2040/api
|
|
ignore_words_list: ser,DOUT
|
|
|
|
# Consistent style
|
|
astyle:
|
|
name: Style, Boards, Package
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
with:
|
|
submodules: false
|
|
- name: Check package references
|
|
run: |
|
|
./tests/ci/pkgrefs_test.sh
|
|
- name: Check boards.txt was not edited after makeboards.py
|
|
run: |
|
|
./tools/makeboards.py > boards.txt
|
|
- name: Run astyle on all code/examples
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install astyle
|
|
./tests/restyle.sh
|
|
# If anything changed, GIT should return an error and fail the test
|
|
git diff --exit-code
|
|
- name: Check Arduino API copy is clean
|
|
run: |
|
|
git submodule update --init ./ArduinoCore-API
|
|
diff -r ./cores/rp2040/api ./ArduinoCore-API/api
|
|
|
|
# Build all examples on linux (core and Arduino IDE)
|
|
build-linux:
|
|
name: Build ${{ matrix.chunk }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
chunk: [0, 1, 2, 3]
|
|
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: ${{ runner.os }}-${{ hashFiles('package/package_pico_index.template.json', 'tests/common.sh') }}
|
|
- name: Build Sketches
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
BUILD_PARITY: custom
|
|
mod: 4
|
|
rem: ${{ matrix.chunk }}
|
|
run: |
|
|
cd pico-sdk
|
|
git submodule update --init
|
|
cd ../pico-extras
|
|
git submodule update --init
|
|
cd ..
|
|
bash ./tests/build.sh
|
|
|
|
# Build TinyUSB examples, requires custom build command line
|
|
build-tinyusb:
|
|
name: Build TinyUSB Examples
|
|
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: ${{ runner.os }}-${{ hashFiles('package/package_pico_index.template.json', 'tests/common.sh') }}
|
|
- name: Build Sketches
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
BUILD_PARITY: custom
|
|
run: |
|
|
cd pico-sdk
|
|
git submodule update --init
|
|
cd ../pico-extras
|
|
git submodule update --init
|
|
cd ..
|
|
bash ./tests/build-tinyusb.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: ${{ runner.os }}-${{ hashFiles('package/package_pico_index.template.json', 'tests/common.sh') }}
|
|
- 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".
|
|
try { Get-Command python3 } catch { copy (get-command python).source (get-command python).source.Replace("python.exe", "python3.exe") }
|
|
cd pico-sdk
|
|
git submodule update --init
|
|
cd ../pico-extras
|
|
git submodule update --init
|
|
cd ..
|
|
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: ${{ runner.os }}-${{ hashFiles('package/package_pico_index.template.json', 'tests/common.sh') }}
|
|
- name: Build Sketch
|
|
env:
|
|
TRAVIS_BUILD_DIR: ${{ github.workspace }}
|
|
TRAVIS_TAG: ${{ github.ref }}
|
|
MACOSX: 1
|
|
BUILD_PARITY: custom
|
|
mod: 500
|
|
rem: 1
|
|
run: |
|
|
cd pico-sdk
|
|
git submodule update --init
|
|
cd ../pico-extras
|
|
git submodule update --init
|
|
cd ..
|
|
bash ./tests/build.sh
|
|
|