444 lines
14 KiB
YAML
444 lines
14 KiB
YAML
name: Build CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
release:
|
|
types: [published]
|
|
check_suite:
|
|
types: [rerequested]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-18.04
|
|
steps:
|
|
- name: Dump GitHub context
|
|
env:
|
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
|
run: echo "$GITHUB_CONTEXT"
|
|
- uses: actions/checkout@v2.2.0
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
|
- name: CircuitPython version
|
|
run: git describe --dirty --tags
|
|
- name: Set up Python 3.8
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.8
|
|
- name: Install deps
|
|
run: |
|
|
sudo apt-get install -y eatmydata
|
|
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64
|
|
pip install requests sh click setuptools cpp-coveralls "Sphinx<4" sphinx-rtd-theme recommonmark sphinx-autoapi sphinxcontrib-svg2pdfconverter polib pyyaml astroid
|
|
- name: Versions
|
|
run: |
|
|
gcc --version
|
|
python3 --version
|
|
- name: Build mpy-cross
|
|
run: make -C mpy-cross -j2
|
|
- name: Build unix port
|
|
run: |
|
|
make -C ports/unix deplibs -j2
|
|
make -C ports/unix -j2
|
|
make -C ports/unix coverage -j2
|
|
- name: Test all
|
|
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1
|
|
working-directory: tests
|
|
- name: Print failure info
|
|
run: |
|
|
for exp in *.exp;
|
|
do testbase=$(basename $exp .exp);
|
|
echo -e "\nFAILURE $testbase";
|
|
diff -u $testbase.exp $testbase.out;
|
|
done
|
|
working-directory: tests
|
|
if: failure()
|
|
- name: Native Tests
|
|
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native
|
|
working-directory: tests
|
|
- name: mpy Tests
|
|
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float
|
|
working-directory: tests
|
|
- name: Stubs
|
|
run: make stubs -j2
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: stubs
|
|
path: circuitpython-stubs*
|
|
- name: Docs
|
|
run: sphinx-build -E -W -b html . _build/html
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: docs
|
|
path: _build/html
|
|
- name: Translations
|
|
run: make check-translate
|
|
- name: New boards check
|
|
run: python3 -u ci_new_boards_check.py
|
|
working-directory: tools
|
|
- name: Build mpy-cross.static-raspbian
|
|
run: make -C mpy-cross -j2 -f Makefile.static-raspbian
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: mpy-cross.static-raspbian
|
|
path: mpy-cross/mpy-cross.static-raspbian
|
|
|
|
- name: Build mpy-cross.static
|
|
run: make -C mpy-cross -j2 -f Makefile.static
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: mpy-cross.static-amd64-linux
|
|
path: mpy-cross/mpy-cross.static
|
|
|
|
- name: Build mpy-cross.static-mingw
|
|
run: make -C mpy-cross -j2 -f Makefile.static-mingw
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: mpy-cross.static-x64-windows
|
|
path: mpy-cross/mpy-cross.static.exe
|
|
|
|
mpy-cross-mac:
|
|
runs-on: macos-10.15
|
|
steps:
|
|
- name: Dump GitHub context
|
|
env:
|
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
|
run: echo "$GITHUB_CONTEXT"
|
|
- name: Make gettext programs available
|
|
run: |
|
|
brew install gettext
|
|
echo "::set-env name=PATH::/usr/local/opt/gettext/bin:$PATH"
|
|
- name: Versions
|
|
run: |
|
|
gcc --version
|
|
python3 --version
|
|
msgfmt --version
|
|
- uses: actions/checkout@v2.2.0
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
|
- name: CircuitPython version
|
|
run: git describe --dirty --tags
|
|
- name: Build mpy-cross
|
|
run: make -C mpy-cross -j2
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: mpy-cross-macos-catalina
|
|
path: mpy-cross/mpy-cross
|
|
|
|
build-arm:
|
|
runs-on: ubuntu-18.04
|
|
needs: test
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
board:
|
|
- "8086_commander"
|
|
- "TG-Watch02A"
|
|
- "aloriumtech_evo_m51"
|
|
- "aramcon_badge_2019"
|
|
- "arduino_mkr1300"
|
|
- "arduino_mkrzero"
|
|
- "arduino_nano_33_ble"
|
|
- "arduino_nano_33_iot"
|
|
- "arduino_zero"
|
|
- "bast_pro_mini_m0"
|
|
- "bdmicro_vina_m0"
|
|
- "capablerobot_usbhub"
|
|
- "catwan_usbstick"
|
|
- "circuitbrains_basic_m0"
|
|
- "circuitbrains_deluxe_m4"
|
|
- "circuitplayground_bluefruit"
|
|
- "circuitplayground_express"
|
|
- "circuitplayground_express_crickit"
|
|
- "circuitplayground_express_displayio"
|
|
- "clue_nrf52840_express"
|
|
- "cp32-m4"
|
|
- "datalore_ip_m4"
|
|
- "datum_distance"
|
|
- "datum_imu"
|
|
- "datum_light"
|
|
- "datum_weather"
|
|
- "electronut_labs_blip"
|
|
- "electronut_labs_papyr"
|
|
- "escornabot_makech"
|
|
- "espruino_pico"
|
|
- "espruino_wifi"
|
|
- "feather_bluefruit_sense"
|
|
- "feather_m0_adalogger"
|
|
- "feather_m0_basic"
|
|
- "feather_m0_express"
|
|
- "feather_m0_express_crickit"
|
|
- "feather_m0_rfm69"
|
|
- "feather_m0_rfm9x"
|
|
- "feather_m0_supersized"
|
|
- "feather_m4_express"
|
|
- "feather_m7_1011"
|
|
- "feather_mimxrt1011"
|
|
- "feather_mimxrt1062"
|
|
- "feather_nrf52840_express"
|
|
- "feather_radiofruit_zigbee"
|
|
- "feather_stm32f405_express"
|
|
- "fluff_m0"
|
|
- "gemma_m0"
|
|
- "grandcentral_m4_express"
|
|
- "hallowing_m0_express"
|
|
- "hallowing_m4_express"
|
|
- "hiibot_bluefi"
|
|
- "imxrt1010_evk"
|
|
- "imxrt1020_evk"
|
|
- "imxrt1060_evk"
|
|
- "itsybitsy_m0_express"
|
|
- "itsybitsy_m4_express"
|
|
- "itsybitsy_nrf52840_express"
|
|
- "kicksat-sprite"
|
|
- "loc_ber_m4_base_board"
|
|
- "makerdiary_nrf52840_mdk"
|
|
- "makerdiary_nrf52840_mdk_usb_dongle"
|
|
- "meowbit_v121"
|
|
- "meowmeow"
|
|
- "metro_m0_express"
|
|
- "metro_m4_airlift_lite"
|
|
- "metro_m4_express"
|
|
- "metro_nrf52840_express"
|
|
- "mini_sam_m4"
|
|
- "monster_m4sk"
|
|
- "ndgarage_ndbit6"
|
|
- "nfc_copy_cat"
|
|
- "nice_nano"
|
|
- "nucleo_f746zg"
|
|
- "nucleo_f767zi"
|
|
- "nucleo_h743zi_2"
|
|
- "ohs2020_badge"
|
|
- "openbook_m4"
|
|
- "openmv_h7"
|
|
- "particle_argon"
|
|
- "particle_boron"
|
|
- "particle_xenon"
|
|
- "pca10056"
|
|
- "pca10059"
|
|
- "pca10100"
|
|
- "pewpew10"
|
|
- "pewpew_m4"
|
|
- "pirkey_m0"
|
|
- "pitaya_go"
|
|
- "pyb_nano_v2"
|
|
- "pybadge"
|
|
- "pybadge_airlift"
|
|
- "pyboard_v11"
|
|
- "pycubed"
|
|
- "pycubed_mram"
|
|
- "pygamer"
|
|
- "pygamer_advance"
|
|
- "pyportal"
|
|
- "pyportal_titano"
|
|
- "pyruler"
|
|
- "robohatmm1_m4"
|
|
- "sam32"
|
|
- "same54_xplained"
|
|
- "seeeduino_wio_terminal"
|
|
- "seeeduino_xiao"
|
|
- "serpente"
|
|
- "shirtty"
|
|
- "simmel"
|
|
- "snekboard"
|
|
- "sparkfun_lumidrive"
|
|
- "sparkfun_nrf52840_mini"
|
|
- "sparkfun_qwiic_micro_no_flash"
|
|
- "sparkfun_qwiic_micro_with_flash"
|
|
- "sparkfun_redboard_turbo"
|
|
- "sparkfun_samd21_dev"
|
|
- "sparkfun_samd21_mini"
|
|
- "sparkfun_samd51_thing_plus"
|
|
- "spresense"
|
|
- "stm32f411ce_blackpill"
|
|
- "stm32f411ve_discovery"
|
|
- "stm32f412zg_discovery"
|
|
- "stm32f4_discovery"
|
|
- "stm32f746g_discovery"
|
|
- "stringcar_m0_express"
|
|
- "teensy40"
|
|
- "teensy41"
|
|
- "teknikio_bluebird"
|
|
- "thunderpack"
|
|
- "trellis_m4_express"
|
|
- "trinket_m0"
|
|
- "trinket_m0_haxpress"
|
|
- "uartlogger2"
|
|
- "uchip"
|
|
- "ugame10"
|
|
- "winterbloom_big_honking_button"
|
|
- "winterbloom_sol"
|
|
- "xinabox_cc03"
|
|
- "xinabox_cs11"
|
|
|
|
steps:
|
|
- name: Set up Python 3.8
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.8
|
|
- name: Install deps
|
|
run: |
|
|
sudo apt-get install -y gettext
|
|
pip install requests sh click setuptools awscli
|
|
wget https://adafruit-circuit-python.s3.amazonaws.com/gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
|
|
sudo tar -C /usr --strip-components=1 -xaf gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
|
|
- name: Versions
|
|
run: |
|
|
gcc --version
|
|
arm-none-eabi-gcc --version
|
|
python3 --version
|
|
- uses: actions/checkout@v2.2.0
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
|
- name: mpy-cross
|
|
run: make -C mpy-cross -j2
|
|
- name: build
|
|
run: python3 -u build_release_files.py
|
|
working-directory: tools
|
|
env:
|
|
BOARDS: ${{ matrix.board }}
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: ${{ matrix.board }}
|
|
path: bin/${{ matrix.board }}
|
|
- name: Upload to S3
|
|
run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp bin/ s3://adafruit-circuit-python/bin/ --recursive --no-progress --region us-east-1"
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|
|
|
|
build-riscv:
|
|
runs-on: ubuntu-18.04
|
|
needs: test
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
board:
|
|
- "fomu"
|
|
|
|
steps:
|
|
- name: Set up Python 3.8
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.8
|
|
- name: Install deps
|
|
run: |
|
|
sudo apt-get install -y gettext
|
|
pip install requests sh click setuptools awscli
|
|
wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-centos6.tar.gz
|
|
sudo tar -C /usr --strip-components=1 -xaf riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-centos6.tar.gz
|
|
- name: Versions
|
|
run: |
|
|
gcc --version
|
|
riscv64-unknown-elf-gcc --version
|
|
python3 --version
|
|
- uses: actions/checkout@v2.2.0
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
|
- name: mpy-cross
|
|
run: make -C mpy-cross -j2
|
|
- name: build
|
|
run: python3 -u build_release_files.py
|
|
working-directory: tools
|
|
env:
|
|
BOARDS: ${{ matrix.board }}
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: ${{ matrix.board }}
|
|
path: bin/${{ matrix.board }}
|
|
- name: Upload to S3
|
|
run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp bin/ s3://adafruit-circuit-python/bin/ --recursive --no-progress --region us-east-1"
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|
|
build-xtensa:
|
|
runs-on: ubuntu-latest
|
|
needs: test
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
board:
|
|
- "espressif_saola_1_wroom"
|
|
- "espressif_saola_1_wrover"
|
|
- "unexpectedmaker_feathers2"
|
|
|
|
steps:
|
|
- name: Set up Python 3.8
|
|
uses: actions/setup-python@v1
|
|
with:
|
|
python-version: 3.8
|
|
- uses: actions/checkout@v2.2.0
|
|
with:
|
|
submodules: true
|
|
fetch-depth: 0
|
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
|
- name: CircuitPython version
|
|
run: git describe --dirty --tags
|
|
- uses: actions/cache@v1
|
|
name: Fetch IDF tool cache
|
|
id: idf-cache
|
|
with:
|
|
path: ${{ github.workspace }}/.idf_tools
|
|
key: ${{ runner.os }}-idf-tools-${{ hashFiles('.git/modules/ports/esp32s2/esp-idf/HEAD') }}-20200523
|
|
- name: Install IDF tools
|
|
run: |
|
|
$IDF_PATH/tools/idf_tools.py --non-interactive install required
|
|
$IDF_PATH/tools/idf_tools.py --non-interactive install cmake
|
|
$IDF_PATH/tools/idf_tools.py --non-interactive install-python-env
|
|
rm -rf $IDF_TOOLS_PATH/dist
|
|
env:
|
|
IDF_PATH: ${{ github.workspace }}/ports/esp32s2/esp-idf
|
|
IDF_TOOLS_PATH: ${{ github.workspace }}/.idf_tools
|
|
- name: Install CircuitPython deps
|
|
run: |
|
|
source $IDF_PATH/export.sh
|
|
pip install requests sh click setuptools awscli
|
|
sudo apt-get install -y gettext ninja-build
|
|
env:
|
|
IDF_PATH: ${{ github.workspace }}/ports/esp32s2/esp-idf
|
|
IDF_TOOLS_PATH: ${{ github.workspace }}/.idf_tools
|
|
- name: Versions
|
|
run: |
|
|
source $IDF_PATH/export.sh
|
|
gcc --version
|
|
xtensa-esp32s2-elf-gcc --version
|
|
python3 --version
|
|
ninja --version
|
|
cmake --version
|
|
shell: bash
|
|
env:
|
|
IDF_PATH: ${{ github.workspace }}/ports/esp32s2/esp-idf
|
|
IDF_TOOLS_PATH: ${{ github.workspace }}/.idf_tools
|
|
- name: mpy-cross
|
|
run: make -C mpy-cross -j2
|
|
- name: build
|
|
run: |
|
|
source $IDF_PATH/export.sh
|
|
python3 -u build_release_files.py
|
|
working-directory: tools
|
|
shell: bash
|
|
env:
|
|
IDF_PATH: ${{ github.workspace }}/ports/esp32s2/esp-idf
|
|
IDF_TOOLS_PATH: ${{ github.workspace }}/.idf_tools
|
|
BOARDS: ${{ matrix.board }}
|
|
- uses: actions/upload-artifact@v1.0.0
|
|
with:
|
|
name: ${{ matrix.board }}
|
|
path: bin/${{ matrix.board }}
|
|
- name: Upload to S3
|
|
run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp bin/ s3://adafruit-circuit-python/bin/ --recursive --no-progress --region us-east-1"
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|