name: MicroPython on: push: pull_request: release: types: [created] env: MICROPYTHON_VERSION: feature/psram MICROPYTHON_FLAVOUR: MichaelBell PIMORONI_PICO_VERSION: feature/sdk-2.0.0 jobs: build: name: ${{ matrix.name }} (${{ matrix.board }} ${{ matrix.variant }}) runs-on: ubuntu-20.04 continue-on-error: true strategy: matrix: include: - name: pico_plus2_rp2350_psram board: PIMORONI_PICO_PLUS2 variant: PSRAM env: # MicroPython version will be contained in github.event.release.tag_name for releases RELEASE_FILE: ${{ matrix.name }}-${{ github.event.release.tag_name || github.sha }}-micropython PIMORONI_PICO_DIR: "${{ github.workspace }}/pimoroni-pico" USER_C_MODULES: "${{ github.workspace }}/src-${{ github.sha }}/modules/dvhstx.cmake" TAG_OR_SHA: ${{ github.event.release.tag_name || github.sha }} MICROPY_BOARD: ${{ matrix.board }} MICROPY_BOARD_VARIANT: ${{ matrix.variant }} MICROPY_BOARD_DIR: "${{ github.workspace }}/src-${{ github.sha }}/micropython/board/${{ matrix.BOARD }}" BOARD_NAME: ${{ matrix.name }} BUILD_TOOLS: src-${{ github.sha }}/ci/micropython.sh steps: - name: "CCache: Restore saved cache" uses: actions/cache@v4 with: path: /home/runner/.ccache key: ccache-micropython-${{ matrix.name }}-${{ github.ref }}-${{ github.sha }} restore-keys: | ccache-micropython-${{ matrix.name }}-${{ github.ref }} ccache-micropython-${{ matrix.name }}- - name: "Src: Checkout" uses: actions/checkout@v4 with: submodules: true path: src-${{ github.sha }} - name: "Pimoroni Pico: Checkout" uses: actions/checkout@v4 with: repository: pimoroni/pimoroni-pico ref: ${{env.PIMORONI_PICO_VERSION}} submodules: true path: pimoroni-pico - name: Install Arm GNU Toolchain (arm-none-eabi-gcc) uses: carlosperate/arm-none-eabi-gcc-action@v1 with: release: '13.3.Rel1' - name: "CCache: Install" run: | source $BUILD_TOOLS apt_install_build_deps - name: "MicroPython: Checkout" run: | source $BUILD_TOOLS micropython_clone - name: "Py_Decl: Checkout" uses: actions/checkout@v4 with: repository: gadgetoid/py_decl ref: v0.0.2 path: py_decl - name: "dir2uf2: Checkout" uses: actions/checkout@v4 with: repository: gadgetoid/dir2uf2 ref: v0.0.7 path: dir2uf2 - name: "MicroPython: Build MPY Cross" run: | source $BUILD_TOOLS micropython_build_mpy_cross - name: "MicroPython: Configure" shell: bash run: | source $BUILD_TOOLS micropython_version cmake_configure - name: "MicroPython: Build" shell: bash run: | source $BUILD_TOOLS cmake_build - name: "Py_Decl: Verify .uf2" shell: bash run: | python3 py_decl/py_decl.py --to-json --verify build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 - name: "Artifacts: Upload .uf2" uses: actions/upload-artifact@v4 with: name: ${{ env.RELEASE_FILE }}.uf2 path: build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 - name: "Release: Upload .uf2" if: github.event_name == 'release' uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: asset_path: build-${{ matrix.name }}/${{ env.RELEASE_FILE }}.uf2 upload_url: ${{ github.event.release.upload_url }} asset_name: ${{ env.RELEASE_FILE }}.uf2 asset_content_type: application/octet-stream