name: Release
on:
push:
tags:
- "v*"
jobs:
release:
name: Release Source Tarball
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Create source tarball
env:
REPO_NAME: ${{ github.event.repository.name }}
TAG_NAME: ${{ github.ref_name }}
run: |
mkdir -p dist
git archive --format=tar.gz --prefix="${REPO_NAME}-${TAG_NAME}/" -o dist/"${REPO_NAME}-${TAG_NAME}-src.tar.gz" HEAD
- name: Upload Release Asset
uses: softprops/action-gh-release@v1
with:
files: dist/*-src.tar.gz
generate_release_notes: true
cargo-publish:
name: Publish to Crates.io
runs-on: ubuntu-latest
needs: release
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust@stable
- name: Publish to crates.io
env:
CARGO_API_TOKEN: ${{ secrets.CARGO_API_TOKEN }}
run: cargo publish --token $CARGO_API_TOKEN