Work with new runners, and add tests #158
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: write | |
| env: | |
| SKIP_RISCV: 0 | |
| SKIP_OPENOCD: 0 | |
| jobs: | |
| build_windows: | |
| name: Build Windows | |
| # runs-on: [self-hosted, Windows, x64] | |
| runs-on: 'windows-latest' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # - name: Setup SSH Auth | |
| # if: runner.environment == 'github-hosted' | |
| # uses: webfactory/[email protected] | |
| # with: | |
| # ssh-private-key: ${{ secrets.SSH_KEY }} | |
| - name: Setup MSYS2 | |
| uses: msys2/setup-msys2@v2 | |
| - name: Build | |
| run: | | |
| subst P: . | |
| P: | |
| ./build.ps1 ./config/x64-win.json -SkipSigning -MSYS2Path (msys2 -c 'cygpath -m /').TrimEnd('\/') | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: tools-win-${{ runner.arch }} | |
| path: | | |
| bin/picotool-*-x64-win.zip | |
| bin/pico-sdk-tools-*-x64-win.zip | |
| bin/openocd-*-x64-win.zip | |
| bin/riscv-toolchain-*-x64-win.zip | |
| - name: Add Release Asset | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: | | |
| bin/picotool-*-x64-win.zip | |
| bin/pico-sdk-tools-*-x64-win.zip | |
| bin/openocd-*-x64-win.zip | |
| bin/riscv-toolchain-*-x64-win.zip | |
| build_macos_arm64: | |
| name: Build MacOS Arm64 | |
| # runs-on: [self-hosted, macOS] | |
| runs-on: 'macos-14' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Homebrew | |
| if: runner.environment == 'github-hosted' | |
| id: set-up-homebrew | |
| uses: Homebrew/actions/setup-homebrew@master | |
| - name: Set up x86_64 Homebrew | |
| if: runner.environment == 'github-hosted' | |
| run: | | |
| NONINTERACTIVE=1 arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |
| # - name: Setup SSH Auth | |
| # if: runner.environment == 'github-hosted' | |
| # uses: webfactory/[email protected] | |
| # with: | |
| # ssh-private-key: ${{ secrets.SSH_KEY }} | |
| - name: Build | |
| run: ./build_macos.sh | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: tools-mac-${{ runner.arch }} | |
| path: | | |
| bin/picotool-*-mac.zip | |
| bin/pico-sdk-tools-*-mac.zip | |
| bin/openocd-*-mac.zip | |
| bin/riscv-toolchain-*.zip | |
| - name: Add Release Asset | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: | | |
| bin/picotool-*-mac.zip | |
| bin/pico-sdk-tools-*-mac.zip | |
| bin/openocd-*-mac.zip | |
| bin/riscv-toolchain-*.zip | |
| build_macos_x64: | |
| name: Build MacOS x64 | |
| runs-on: 'macos-13' | |
| env: | |
| # Universal picotool is built on arm64 | |
| SKIP_PICOTOOL: 1 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Homebrew | |
| if: runner.environment == 'github-hosted' | |
| id: set-up-homebrew | |
| uses: Homebrew/actions/setup-homebrew@master | |
| - name: Build | |
| run: ./build_macos.sh | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: tools-mac-${{ runner.arch }} | |
| path: | | |
| bin/openocd-*-mac.zip | |
| bin/riscv-toolchain-*.zip | |
| - name: Add Release Asset | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: | | |
| bin/openocd-*-mac.zip | |
| bin/riscv-toolchain-*.zip | |
| build_linux: | |
| name: Build Linux | |
| # strategy: | |
| # matrix: | |
| # os: [[self-hosted, linux, x64], [self-hosted, linux, arm64]] | |
| strategy: | |
| matrix: | |
| os: [ubuntu-22.04, [self-hosted, linux, arm64, bookworm, 8G]] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| # - name: Setup SSH Auth | |
| # if: runner.environment == 'github-hosted' | |
| # uses: webfactory/[email protected] | |
| # with: | |
| # ssh-private-key: ${{ secrets.SSH_KEY }} | |
| - name: Build | |
| run: ./build_linux.sh | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: tools-lin-${{ runner.arch }} | |
| path: | | |
| bin/picotool-*-lin.tar.gz | |
| bin/pico-sdk-tools-*-lin.tar.gz | |
| bin/openocd-*-lin.tar.gz | |
| bin/riscv-toolchain-*-lin.tar.gz | |
| - name: Add Release Asset | |
| uses: softprops/action-gh-release@v2 | |
| if: startsWith(github.ref, 'refs/tags/') | |
| with: | |
| files: | | |
| bin/picotool-*-lin.tar.gz | |
| bin/pico-sdk-tools-*-lin.tar.gz | |
| bin/openocd-*-lin.tar.gz | |
| bin/riscv-toolchain-*-lin.tar.gz | |
| test_binaries: | |
| name: Test Binaries | |
| needs: [build_linux, build_macos_arm64, build_windows] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos_latest, windows_latest, [self-hosted, linux, arm64, bookworm_desktop], [self-hosted, linux, arm64, trixie_desktop]] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Download build (Windows) | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: tools-x64-win | |
| - name: Download build (MacOS Arm64) | |
| if: ${{ runner.os == 'macOS' }} | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: tools-mac-arm64 | |
| - name: Download build (Linux) | |
| if: ${{ runner.os == 'Linux' }} | |
| uses: actions/download-artifact@v5 | |
| with: | |
| name: tools-lin-${{ runner.arch }} | |
| - name: Extract build (zip) | |
| if: ${{ runner.os == 'Windows' }} || ${{ runner.os == 'macOS' }} | |
| shell: bash # Windows only has unzip in bash shell | |
| run: | | |
| unzip openocd*.zip | |
| ls | |
| unzip pico-sdk-tools*.zip | |
| ls | |
| unzip picotool*.zip | |
| ls | |
| unzip riscv-toolchain*.zip | |
| ls | |
| - name: Extract build (tar.gz) | |
| if: ${{ runner.os == 'Linux' }} | |
| run: | | |
| tar -xvf openocd*.tar.gz | |
| ls | |
| tar -xvf pico-sdk-tools*.tar.gz | |
| ls | |
| tar -xvf picotool*.tar.gz | |
| ls | |
| tar -xvf riscv-toolchain*.tar.gz | |
| ls | |
| - name: Test everything runs | |
| run: | | |
| ./picotool/picotool version | |
| ./pioasm/pioasm --version | |
| ./openocd --version | |
| ./bin/riscv32-unknown-elf-gcc --version | |
| ./bin/riscv32-unknown-elf-gdb --version |