Release RISC-V IMC #9
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
name: Release RISC-V IMC | |
on: | |
workflow_dispatch: | |
inputs: | |
release_name: | |
description: 'Name of the GitHub Release' | |
required: true | |
default: 'v0.5.0' | |
release_tag: | |
description: 'Tag for the GitHub Release' | |
required: true | |
default: 'v0.5.0' | |
prefix: | |
description: 'Prefix for binary name' | |
required: true | |
default: 'esp32-conways-game-of-life' | |
board: | |
description: 'Target directory for the ESP32-C3 project (e.g. esp32-c3-lcdkit)' | |
required: true | |
default: 'esp32-c3-lcdkit' | |
env: | |
CARGO_TERM_COLOR: always | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
jobs: | |
riscv-imc-release: | |
name: RISC-V IMC Release (ESP32-C3 Projects) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Setup Rust for RISC-V IMC | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: riscv32imc-unknown-none-elf | |
- name: Build ESP32-C3 Project and Collect Assets | |
run: | | |
cd "${{ github.event.inputs.board }}" | |
cargo build --release | |
cd .. | |
mkdir -p release_riscv_imc | |
cargo install espflash | |
espflash save-image --chip esp32c3 "${{ github.event.inputs.board }}/target/riscv32imc-unknown-none-elf/release/esp32-conways-game-of-life-rs" release_riscv_imc/esp32-conways-game-of-life-rs | |
- name: Check if Release Exists | |
id: check_release | |
run: | | |
set +e | |
gh release view "${{ github.event.inputs.release_tag }}" > /dev/null 2>&1 | |
if [ $? -eq 0 ]; then | |
echo "Release already exists." | |
echo "release_exists=true" >> $GITHUB_ENV | |
else | |
echo "Release does not exist." | |
echo "release_exists=false" >> $GITHUB_ENV | |
fi | |
set -e | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create Release if Needed | |
if: env.release_exists == 'false' | |
run: | | |
gh release create "${{ github.event.inputs.release_tag }}" --title "${{ github.event.inputs.release_name }}" --prerelease | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload RISC-V IMC Assets | |
run: | | |
for file in $(find release_riscv_imc -type f); do | |
base=$(basename "$file") | |
asset_name="${{ github.event.inputs.prefix }}-${{ github.event.inputs.release_tag }}-${{ github.event.inputs.board }}.bin" | |
echo "Uploading $file as $asset_name" | |
ls -l $file | |
gh release upload "${{ github.event.inputs.release_tag }}" "$file#${asset_name}" --clobber | |
done | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |