name: Release crate on: release: types: [published] env: GITEA_BASE_URL: https://gitea.heiserer.de REGISTRY_OWNER: ${{ github.repository_owner }} jobs: release: name: Publish to crates.io and create GitHub Release runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Cache cargo registry and git index uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Build and test run: cargo test --workspace --verbose - name: Install cargo-edit and set crate version id: set_version run: | # install cargo-edit (provides `cargo set-version`) cargo install cargo-edit --locked --force TAG="${{ github.event.release.tag_name }}" # strip a leading 'v' if present VERSION="${TAG#v}" cargo set-version "$VERSION" --workspace # expose the version for later steps echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Configure Cargo registries (crates.io default + add Gitea) shell: bash env: TOKEN: ${{ secrets.CARGO_GITEA_TOKEN }} run: | mkdir -p ~/.cargo # crates.io stays default cat > ~/.cargo/config.toml <<'EOF' [registry] default = "crates-io" EOF # Add Gitea as extra registry (sparse index recommended) { echo "[registries.gitea]" echo "index = \"sparse+${GITEA_BASE_URL}/api/packages/${REGISTRY_OWNER}/cargo/\"" } >> ~/.cargo/config.toml # Auth for Gitea registry umask 077 cat > ~/.cargo/credentials.toml <