tinyuf2/.github/workflows/build.yml
2021-03-04 22:14:56 -05:00

190 lines
6.2 KiB
YAML

name: Build
on:
pull_request:
push:
repository_dispatch:
release:
types:
- created
jobs:
ESP32-S2:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
board:
# Alphabetical order
- 'adafruit_feather_esp32s2'
- 'adafruit_feather_esp32s2_tft'
- 'adafruit_funhouse_esp32s2'
- 'adafruit_magtag_29gray'
- 'adafruit_metro_esp32s2'
- 'espressif_kaluga_1'
- 'espressif_saola_1_wroom'
- 'espressif_saola_1_wrover'
- 'gravitech_cucumberRIS_v1.1'
- 'lilygo_ttgo_t8_s2_st7789'
- 'microdev_micro_s2'
- 'olimex_esp32s2_devkit_lipo_vB1'
- 'targett_mcb_wroom'
- 'targett_mcb_wrover'
- 'unexpectedmaker_feathers2'
steps:
- name: Setup Python
uses: actions/setup-python@v2
- name: Checkout
uses: actions/checkout@v2
with:
submodules: 'true'
- uses: actions/cache@v2
name: Fetch IDF tool cache
id: idf-cache
with:
path: ${{ github.workspace }}/.idf_tools
key: ${{ runner.os }}-idf-tools-${{ hashFiles('.git/modules/lib/esp-idf/HEAD') }}-20201222
- name: Clone IDF submodules
run: |
(cd $IDF_PATH && git submodule update --init)
env:
IDF_PATH: ${{ github.workspace }}/lib/esp-idf
- name: Install IDF tools
if: steps.idf-cache.outputs.cache-hit != 'true'
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 }}/lib/esp-idf
IDF_TOOLS_PATH: ${{ github.workspace }}/.idf_tools
- name: Build
run: |
source $IDF_PATH/export.sh
make -C ports/esp32s2/ BOARD=${{ matrix.board }} all self-update copy-artifact
env:
IDF_PATH: ${{ github.workspace }}/lib/esp-idf
IDF_TOOLS_PATH: ${{ github.workspace }}/.idf_tools
- uses: actions/upload-artifact@v2
with:
name: ${{ matrix.board }}
path: ports/esp32s2/_bin/${{ matrix.board }}/
- name: Create Release Asset
if: ${{ github.event_name == 'release' }}
run: |
#for f in ports/esp32s2/_bin/${{ matrix.board }}/*; do mv $f ${f%.*}-${{ github.event.release.tag_name }}."${f#*.}"; done
zip -jr tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.zip ports/esp32s2/_bin/${{ matrix.board }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ github.event_name == 'release' }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.zip
asset_name: tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.zip
asset_content_type: application/zip
- name: Upload Release Asset for Self-Update
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ github.event_name == 'release' }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ports/esp32s2/_bin/${{ matrix.board }}/update-tinyuf2.uf2
asset_name: update-tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.uf2
asset_content_type: application/x-binary
ARM:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
board:
# Alphabetical order
# lpc55
- 'double_m33_express'
- 'lpcxpresso55s28'
- 'lpcxpresso55s69'
# mimxrt10xx
- 'imxrt1010_evk'
- 'imxrt1020_evk'
- 'imxrt1060_evk'
- 'metro_m7_1011'
#stm32f3
- 'stm32f303disco'
# stm32f4
- 'feather_stm32f405_express'
- 'stm32f411ve_discovery'
- 'stm32f401_blackpill'
steps:
- name: Setup Python
uses: actions/setup-python@v2
- name: Setup Node.js
uses: actions/setup-node@v1
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: 'true'
- name: Install Toolchains
run: |
npm install --global xpm
xpm install --global @xpack-dev-tools/arm-none-eabi-gcc@latest
echo `echo $HOME/.local/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH
- name: Find Port
run: |
PORT=`echo ports/*/boards/${{ matrix.board }}`
PORT=`dirname $PORT`
PORT=`dirname $PORT`
echo PORT=$PORT >> $GITHUB_ENV
- name: Build
run: make -C $PORT BOARD=${{ matrix.board }} all copy-artifact
- uses: actions/upload-artifact@v2
with:
name: ${{ matrix.board }}
path: ${{ env.PORT }}/_bin/${{ matrix.board }}
- name: Create Release Asset
if: ${{ github.event_name == 'release' }}
run: |
for f in ${{ env.PORT }}/_bin/${{ matrix.board }}/*; do mv $f ${f%.*}-${{ github.event.release.tag_name }}."${f#*.}"; done
zip -jr tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.zip ${{ env.PORT }}/_bin/${{ matrix.board }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ github.event_name == 'release' }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.zip
asset_name: tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.zip
asset_content_type: application/zip
- name: Upload Release Asset for Self-Update
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ github.event_name == 'release' }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ env.PORT }}/_bin/${{ matrix.board }}/update-tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.uf2
asset_name: update-tinyuf2-${{ matrix.board }}-${{ github.event.release.tag_name }}.uf2
asset_content_type: application/x-binary