phantom-frame 0.2.11

A high-performance prerendering proxy engine with caching support
Documentation
name: Release

on:
  push:
    tags:
      - 'v*.*.*'

env:
  CARGO_TERM_COLOR: always

permissions:
  contents: write
  packages: write

jobs:
  create-release:
    name: Create Release
    runs-on: ubuntu-latest
    steps:
    - name: Create Release
      uses: softprops/action-gh-release@v1
      with:
        tag_name: ${{ github.ref_name }}
        name: Release ${{ github.ref_name }}
        draft: false
        prerelease: false
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  build-release:
    name: Build Release
    needs: create-release
    runs-on: ${{ matrix.os }}
    env:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            artifact_name: phantom-frame
            asset_name: phantom-frame-linux-x86_64
          - os: windows-latest
            artifact_name: phantom-frame.exe
            asset_name: phantom-frame-windows-x86_64.exe
          - os: macos-latest
            artifact_name: phantom-frame
            asset_name: phantom-frame-macos-x86_64

    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable
        components: rustfmt, clippy

    - name: Run cargo fmt
      run: cargo fmt

    - name: Build release binary
      run: cargo build --release --verbose

    - name: Strip binary (Unix)
      if: runner.os != 'Windows'
      run: strip target/release/${{ matrix.artifact_name }}

    - name: Rename artifact for upload
      shell: bash
      run: |
        mkdir -p artifacts
        cp target/release/${{ matrix.artifact_name }} artifacts/${{ matrix.asset_name }}

    - name: Upload Release Asset
      run: gh release upload ${{ github.ref_name }} ./artifacts/${{ matrix.asset_name }} --clobber

  publish-crate:
    name: Publish to crates.io
    needs: build-release
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4

    - name: Install Rust
      uses: dtolnay/rust-toolchain@stable
      with:
        toolchain: stable

    - name: Publish to crates.io
      run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
      continue-on-error: true