Skip to content

Merge pull request #31 from LouDnl/dev #3

Merge pull request #31 from LouDnl/dev

Merge pull request #31 from LouDnl/dev #3

Workflow file for this run

name: USBSID-Pico Release
env:
BUILD_THREADS: 4
BUILD_TYPE: Release
# Pico-SDK version
PICO_SDK_REF: 2.0.0
PICO_EXTRAS_REF: sdk-2.0.0
PICOTOOL_REF: 2.0.0
on:
push:
branches: [master]
tags:
- "*"
# Allows you to run this workflow manually from the Actions tab when needed
# workflow_dispatch:
jobs:
release:
name: Create release files
runs-on: ubuntu-latest
permissions:
contents: write
needs: build
# job will only start if there is a new tag
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Branch latest
id: branch_name
run: |
echo "IS_TAG=${{ startsWith(github.ref, 'refs/tags/') }}" >> $GITHUB_OUTPUT
echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
- name: 📇 Checkout project
uses: actions/checkout@v4
with:
fetch-depth: 0
# path: master
- name: Generate release notes
env:
IS_TAG: ${{ steps.branch_name.outputs.IS_TAG }}
SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }}
if: "${{ env.IS_TAG == 'true' }}"
id: release-notes
run: |
echo "**Commits in this release:**" > release_notes.md
git log $(git tag --sort version:refname | tail -n 2 | head -n 1)..HEAD --oneline >> release_notes.md
- name: Download all archived artifacts
env:
IS_TAG: ${{ steps.branch_name.outputs.IS_TAG }}
SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }}
if: "${{ env.IS_TAG == 'true' }}"
uses: actions/download-artifact@v4 # https://github.com/actions/download-artifact
with:
path: release
pattern: releasebuild-usbsid*
merge-multiple: true
- name: View folder content
env:
IS_TAG: ${{ steps.branch_name.outputs.IS_TAG }}
SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }}
if: "${{ env.IS_TAG == 'true' }}"
run: ls -R
- name: Create tagged release
id: create_release
env:
IS_TAG: ${{ steps.branch_name.outputs.IS_TAG }}
SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }}
if: "${{ env.IS_TAG == 'true' }}"
uses: ncipollo/release-action@v1 # https://github.com/ncipollo/release-action
with:
tag: ${{ env.SOURCE_TAG }}
name: ${{ env.SOURCE_TAG }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "release/*.uf2"
prerelease: false
removeArtifacts: true
generateReleaseNotes: true
bodyFile: "release_notes.md"
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
include:
- {
buildname: Pico,
directory: pico,
pico_board: pico,
pico_platform: rp2040,
}
- {
buildname: Pico_W,
directory: picow,
pico_board: pico_w,
pico_platform: rp2040,
}
- {
buildname: Pico2,
directory: pico2,
pico_board: pico2,
pico_platform: rp2350-arm-s,
}
fail-fast: false
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: 🛠️ Arm GNU Toolchain (arm-none-eabi-gcc)
uses: carlosperate/arm-none-eabi-gcc-action@v1
- name: Install Act dependencies
if: ${{ env.ACT }}
run: |
apt-get update && apt-get install sudo -y
- name: Install dependencies
if: ${{ env.ACT }}
run: |
sudo apt-get update && sudo apt-get install curl build-essential cmake -y
- name: 🗒️ Check GCC Version
id: compiler-version
run: |
arm-none-eabi-gcc --version
ver=$(arm-none-eabi-gcc --version | head -1)
echo "CC_VERSION=$ver" >> $GITHUB_OUTPUT
- name: 💽 Cache Pico-SDK
id: cache-pico-sdk
uses: actions/cache@v4
with:
path: pico-sdk
key: ${{runner.os}}-pico-sdk-${{env.PICO_SDK_REF}}
- name: 📇 Checkout Pico-SDK
if: ${{steps.cache-pico-sdk.outputs.cache-hit != 'true' }}
uses: actions/checkout@v4
with:
repository: raspberrypi/pico-sdk
ref: ${{env.PICO_SDK_REF}}
path: pico-sdk
submodules: recursive
- name: 🔖 Add PICO_SDK_PATH to Environment
run: |
echo "PICO_SDK_PATH=${{github.workspace}}/pico-sdk" >> $GITHUB_ENV
cd pico-sdk/lib/tinyusb
git checkout master
git pull
python3 tools/get_deps.py rp2040
- name: 💽 Cache Pico-Extras
id: cache-pico-extras
uses: actions/cache@v4
with:
path: pico-extras
key: ${{runner.os}}-pico-extras-${{env.PICO_EXTRAS_REF}}
- name: 📇 Checkout Pico-Extras
if: ${{steps.cache-pico-extras.outputs.cache-hit != 'true' }}
uses: actions/checkout@v4
with:
repository: raspberrypi/pico-extras
ref: ${{env.PICO_EXTRAS_REF}}
path: pico-extras
submodules: recursive
- name: 🔖 Add PICO_EXTRAS_PATH to Environment
run: |
echo "PICO_EXTRAS_PATH=${{github.workspace}}/pico-extras" >> $GITHUB_ENV
ls pico-extras/external -la
- name: 💽 Cache picotool
id: cache-picotool
uses: actions/cache@v4
with:
path: picotool
key: ${{runner.os}}-picotool-${{env.PICOTOOL_REF}}
- name: 📇 Checkout picotool
if: ${{steps.cache-picotool.outputs.cache-hit != 'true' }}
uses: actions/checkout@v4
with:
repository: raspberrypi/picotool
ref: ${{env.PICOTOOL_REF}}
path: picotool-src
submodules: recursive
- name: 🏭 Build picotool
if: ${{steps.cache-picotool.outputs.cache-hit != 'true' }}
run: |
cmake -S picotool-src -B picotool-src/build -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/picotool -DPICOTOOL_FLAT_INSTALL=1
cd picotool-src/build
make -j ${{env.BUILD_THREADS}} install
- name: 📇 Checkout project
uses: actions/checkout@v4
with:
path: master
- name: 🏭 Create build folders
run: |
mkdir -p ${{github.workspace}}/master/build_${{matrix.directory}}
- name: 🏭 Setup CMAKE
run: |
unset PICO_PLATFORM
unset PICO_BOARD
cmake -S master -B ${{github.workspace}}/master/build_${{matrix.directory}} -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DPICO_PLATFORM=${{matrix.pico_platform}} -DPICO_BOARD=${{matrix.pico_board}} -Dpicotool_DIR=${{github.workspace}}/picotool/picotool $extra_arg
- name: 🏭 Build ${{matrix.name}}
run: |
cmake --build ${{github.workspace}}/master/build_${{matrix.directory}} --config ${{env.BUILD_TYPE}} -j ${{env.BUILD_THREADS}}
- name: List build files
run: |
ls ${{github.workspace}}/master/build_${{matrix.directory}}/*.uf2 -la
- name: 💾 Gather Artifact Files
working-directory: ${{github.workspace}}/master
run: |
mkdir dist
cp -av build_${{matrix.directory}}/*.uf2 dist/
- name: Get current branch
run: |
echo "BRANCHNAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
- name: Get current datetime
run: |
echo "DATETIME=$(date +'%Y%m%dT%H%M%S')" >> $GITHUB_ENV
- name: 💾 Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: releasebuild-usbsid${{matrix.pico_board}}
path: ${{github.workspace}}/master/dist