name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: read
pages: write
id-token: write
env:
CARGO_TERM_COLOR: always
jobs:
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Rust
uses: esp-rs/xtensa-toolchain@v1.5
with:
default: true
buildtargets: esp32
ldproxy: true
version: 1.82.0.3
- name: Check if version already published
id: check_version
run: |
VERSION=$(grep '^version = ' Cargo.toml | head -1 | cut -d '"' -f 2)
if curl -s -H 'User-Agent: esp32-simple-ci' https://crates.io/api/v1/crates/esp32-simple | \
jq -e ".versions[] | select(.num == \"$VERSION\")" > /dev/null 2>&1; then
echo "Version $VERSION already published, skipping"
echo "exists=true" >> $GITHUB_OUTPUT
else
echo "Version $VERSION not found, will publish"
echo "exists=false" >> $GITHUB_OUTPUT
fi
- name: Publish to crates.io
if: steps.check_version.outputs.exists == 'false'
run: cargo publish --no-verify --allow-dirty
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
docs:
name: Deploy documentation
runs-on: ubuntu-latest
needs: publish
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Rust
uses: esp-rs/xtensa-toolchain@v1.5
with:
default: true
buildtargets: esp32
ldproxy: true
version: 1.82.0.3
- name: Build documentation
run: cargo doc --no-deps
- name: Create index redirect
run: echo '<meta http-equiv="refresh" content="0;url=esp32_simple/index.html">' > target/xtensa-esp32-espidf/doc/index.html
- name: Upload documentation artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./target/xtensa-esp32-espidf/doc
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4