stackure 1.20260907.77

Official Stackure authentication SDK for Rust
Documentation
name: Release (date-based auto)

on:
  push:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: write
  id-token: write
  attestations: write

concurrency:
  group: release
  cancel-in-progress: false

env:
  CARGO_TERM_COLOR: always

jobs:
  release:
    runs-on: ubuntu-latest
    environment:
      name: crates-io
      url: https://crates.io/crates/stackure
    steps:
      - uses: actions/checkout@v7
      - name: Compute date-based version
        id: v
        run: |
          version="1.$(date -u +%Y%m%d).${GITHUB_RUN_NUMBER}"
          echo "version=$version" >> "$GITHUB_OUTPUT"
          echo "tag=v$version" >> "$GITHUB_OUTPUT"
      - name: Set version in Cargo.toml
        run: |
          sed -i -E "s/^version = \"[^\"]*\"/version = \"${{ steps.v.outputs.version }}\"/" Cargo.toml
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo build --release
      - name: Package
        run: cargo package --allow-dirty
      - name: Attest provenance
        uses: actions/attest-build-provenance@v4
        with:
          subject-path: target/package/stackure-${{ steps.v.outputs.version }}.crate
      - name: Authenticate to crates.io (OIDC trusted publishing)
        id: auth
        uses: rust-lang/crates-io-auth-action@v1
      - name: Publish to crates.io
        run: cargo publish --allow-dirty
        env:
          CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
      - name: Create + push tag
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git tag "${{ steps.v.outputs.tag }}"
          git push origin "${{ steps.v.outputs.tag }}"
      - name: GitHub Release
        uses: softprops/action-gh-release@v3
        with:
          tag_name: ${{ steps.v.outputs.tag }}
          files: target/package/stackure-${{ steps.v.outputs.version }}.crate
          generate_release_notes: true