Skip to content

Release Xtensa

Release Xtensa #3

name: Release Xtensa
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'
target_box:
description: 'Target directory for the box project (e.g. esp32-s3-box-3)'
required: true
default: 'esp32-s3-box-3'
target_minimal:
description: 'Target directory for the minimal project (e.g. esp32-s3-box-3-minimal)'
required: true
default: 'esp32-s3-box-3-minimal'
env:
CARGO_TERM_COLOR: always
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
xtensa-release:
name: Xtensa Release (ESP32-S3 Projects)
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install espup and set toolchain 1.85.0.0
run: |
cargo install espup --locked
espup install --toolchain-version 1.85.0.0
source ~/export-esp.sh
- name: Install espflash CLI
run: cargo install espflash --locked
- name: Setup Rust for Xtensa (ESP32-S3)
uses: esp-rs/[email protected]
with:
default: true
buildtargets: esp32s3
ldproxy: false
version: "1.85.0"
- name: Build Xtensa Projects, Create Flashable Images, and Collect Assets
run: |
# Build the box project.
cd "${{ github.event.inputs.target_box }}"
cargo build --release
# Create flashable image for the box project.
espflash save-image --output flash_image_box.bin target/xtensa-esp32s3-none-elf/release/esp32-conways-game-of-life-rs
cd ..
# Build the minimal project.
cd "${{ github.event.inputs.target_minimal }}"
cargo build --release
# Create flashable image for the minimal project.
espflash save-image --output flash_image_minimal.bin target/xtensa-esp32s3-none-elf/release/esp32-conways-game-of-life-rs-minimal
cd ..
# Create a folder to collect assets.
mkdir -p release_xtensa
cp "${{ github.event.inputs.target_box }}/flash_image_box.bin" release_xtensa/
cp "${{ github.event.inputs.target_minimal }}/flash_image_minimal.bin" release_xtensa/
- name: Install GitHub CLI
run: sudo apt-get install -y gh
- name: Authenticate GitHub CLI
run: gh auth login --with-token <<< "${{ secrets.GITHUB_TOKEN }}"
- 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
- 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
- name: Upload Xtensa Assets
run: |
for file in $(find release_xtensa -type f); do
base=$(basename "$file")
asset_name="${{ github.event.inputs.prefix }}-${{ github.event.inputs.release_tag }}-${base}"
echo "Uploading $file as $asset_name"
gh release upload "${{ github.event.inputs.release_tag }}" "$file#${asset_name}" --clobber
done
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}