diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..0aecd6d --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,19 @@ +name: Publish to crates.io + +on: + push: + tags: ["v*"] # Triggers when pushing tags starting with 'v' + +jobs: + publish: + runs-on: ubuntu-latest + # environment: release # Optional: for enhanced security + permissions: + id-token: write # Required for OIDC token exchange + steps: + - uses: actions/checkout@v7 + - uses: rust-lang/crates-io-auth-action@v1.0.5 + id: auth + - run: cargo publish + env: + CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..2e72b7e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,67 @@ +name: GitHub Release + +on: + push: + tags: + - "v*" + +jobs: + build: + name: ${{ matrix.target }} + strategy: + matrix: + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + binary: matrixfall + - os: windows-latest + target: x86_64-pc-windows-msvc + binary: matrixfall.exe + - os: macos-latest + target: x86_64-apple-darwin + binary: matrixfall + + runs-on: ${{ matrix.os }} + permissions: + id-token: write + attestations: write + + steps: + - uses: actions/checkout@v7 + + - name: Build + run: cargo build --release + + - name: Generate provenance + uses: actions/attest-build-provenance@v4 + with: + subject-path: target/release/${{ matrix.binary }} + + - name: Upload artifact + uses: actions/upload-artifact@v7.0.1 + with: + name: ${{ matrix.target }} + path: target/release/${{ matrix.binary }} + + release: + needs: build + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - name: Download all artifacts + uses: actions/download-artifact@v8.0.1 + with: + path: artifacts + + - name: Create Release + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release create "${{ github.ref_name }}" \ + artifacts/x86_64-unknown-linux-gnu/matrixfall \ + artifacts/x86_64-pc-windows-msvc/matrixfall.exe \ + artifacts/x86_64-apple-darwin/matrixfall \ + --generate-notes \ + --title "${{ github.ref_name }}"