Skip to content

Release RISC-V IMC

Release RISC-V IMC #9

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 }}