Skip to content

Release ESP32 Rust Binaries #3

Release ESP32 Rust Binaries

Release ESP32 Rust Binaries #3

Workflow file for this run

name: Release ESP32 Rust Binaries
on:
workflow_dispatch:
inputs:
release_tag:
description: "Upload to specific release"
required: true
default: 'v0.1.0'
skip_projects:
description: "Skip projects during build (e.g. esp32-c3-devkit-rust)"
required: false
default: ''
jobs:
get_release:
name: Get release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.get_upload_url.outputs.url }}
steps:
- uses: octokit/[email protected]
id: get_release
with:
route: GET /repos/{owner}/{repo}/releases/tags/${{ github.event.inputs.release_tag }}
owner: georgik
repo: esp32-conways-game-of-life-rs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: get upload url
id: get_upload_url
run: |
url=$(echo "$response" | jq -r '.upload_url' | sed 's/{?name,label}//')
echo "::set-output name=url::$url"
env:
response: ${{ steps.get_release.outputs.data }}
build:
runs-on: ubuntu-20.04
container:
image: espressif/idf-rust:all_1.73.0.1
options: --user esp --workdir /home/esp
needs: get_release
steps:
- name: Clone repository with specific branch
run: |
export HOME=/home/esp
cd /home/esp
curl -L https://wokwi.com/ci/install.sh | sh
pwd
git clone --depth 1 --branch ${{ github.ref_name }} https://github.com/georgik/esp32-conways-game-of-life-rs.git project
- name: Build and upload binaries
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WOKWI_CLI_TOKEN: ${{ secrets.WOKWI_CLI_TOKEN }}
run: |
# Workaround GitHub issue with setting HOME in container https://github.com/actions/runner/issues/863
export HOME=/home/esp
cd /home/esp
. /home/esp/.bashrc
. /home/esp/export-esp.sh
# Upload loop for each binary
cd project
VERSION=$(grep '^version =' Cargo.toml | cut -d '"' -f2)
CHIP=$(grep 'hal = { package =' Cargo.toml | cut -d '"' -f2 | cut -d '-' -f1)
cargo espflash save-image --chip ${CHIP} --release --merge --skip-padding esp32-conways-game-of-life-rs.bin
/home/esp/bin/wokwi-cli --timeout 5000 --timeout-exit-code 0 --screenshot-part "lcd1" --screenshot-time 5000 --screenshot-file "screenshot.png" "."
asset_path="/home/esp/project/esp32-conways-game-of-life-rs.bin"
asset_name="esp32-conways-game-of-life-rs-${{ github.event.inputs.release_tag }}.bin"
curl \
--request POST \
--header "authorization: Bearer $GITHUB_TOKEN" \
--header "Content-Type: application/octet-stream" \
--data-binary "@$asset_path" \
--url "${{ needs.get_release.outputs.upload_url }}?name=${asset_name}"
asset_path="/home/esp/project/screenshot.png"
asset_name="esp32-conways-game-of-life-rs-${{ github.event.inputs.release_tag }}.png"
curl \
--request POST \
--header "authorization: Bearer $GITHUB_TOKEN" \
--header "Content-Type: application/octet-stream" \
--data-binary "@$asset_path" \
--url "${{ needs.get_release.outputs.upload_url }}?name=${asset_name}"