yukina 0.20250412.0

YUKI-based Next-generation Async-cache
Documentation
name: Rust

on:
  - push
  - pull_request

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
      with:
        submodules: 'recursive'
    - name: Generate Cargo.toml.cache (Ignore version=)
      run: |
        sed '/^version = /d' Cargo.toml > Cargo.toml.cache
    - uses: actions/cache@v4
      with:
        path: |
          ~/.cargo/registry/index
          ~/.cargo/registry/cache
          ~/.cargo/git
          target
        key: musl-cargo-${{ hashFiles('./Cargo.toml.cache') }}
    - name: Remove files for a build with correct version info
      run: |
        find target/ -name 'shadow*' -exec rm -r {} + || true
        find target/ -name 'yukina' -delete || true
    - name: Test & Compile
      run: |
        mkdir -p ~/.cargo/{git,registry}
        # Fix git permission issue with Docker and shadow-rs
        sudo chown -R root .
        docker run --rm -t \
            --mount type=bind,source=${{ github.workspace }},target=/volume \
            --mount type=bind,source=$HOME/.cargo/registry,target=/root/.cargo/registry \
            --mount type=bind,source=$HOME/.cargo/git,target=/root/.cargo/git \
            --network=host \
            clux/muslrust:stable \
            cargo test
        docker run --rm -t \
            --mount type=bind,source=${{ github.workspace }},target=/volume \
            --mount type=bind,source=$HOME/.cargo/registry,target=/root/.cargo/registry \
            --mount type=bind,source=$HOME/.cargo/git,target=/root/.cargo/git \
            --network=host \
            clux/muslrust:stable \
            cargo build --release
        sudo chown -R runner ~/.cargo/
        sudo chown -R runner .
        # show version info
        RUST_LOG=debug target/x86_64-unknown-linux-musl/release/yukina --version

    - name: Deploy - Create and Upload Release
      if: startsWith(github.ref, 'refs/tags/')
      uses: ncipollo/release-action@v1
      with:
        artifacts: |
          target/x86_64-unknown-linux-musl/release/yukina
          target/x86_64-unknown-linux-musl/release/kv
    - name: Deploy - Put it in artifact (if not a tag)
      if: false == startsWith(github.ref, 'refs/tags/')
      uses: actions/upload-artifact@v4
      with:
        name: yukina
        path: |
          target/x86_64-unknown-linux-musl/release/yukina
          target/x86_64-unknown-linux-musl/release/kv
    - name: Release to crates.io
      if: startsWith(github.ref, 'refs/tags/')
      uses: katyo/publish-crates@v2
      with:
        registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}