sqltool 0.4.1

功能强大的数据库迁移、同步、运维工具,支持自动分库分表、慢查询检测、数据对比、备份恢复,提供多语言SDK
Documentation
name: Release

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

env:
  CARGO_TERM_COLOR: always

jobs:
  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
        uses: Swatinem/rust-cache@v2

      - name: Check for tag version match
        run: |
          VERSION="${{ github.ref_name }}"
          VERSION="${VERSION#v}"
          CARGO_VERSION=$(grep '^version = ' Cargo.toml | head -1 | cut -d'"' -f2)
          if [ "$VERSION" != "$CARGO_VERSION" ]; then
            echo "Error: Tag version $VERSION does not match Cargo.toml version $CARGO_VERSION"
            exit 1
          fi

      - name: Run tests
        run: cargo test --all-features --verbose

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

      - name: Package macOS binary
        run: |
          tar czf sqltool-macos.tar.gz -C target/release sqltool
          echo "MACOS_SHA256=$(shasum -a 256 sqltool-macos.tar.gz | cut -d' ' -f1)" >> $GITHUB_ENV

      - name: Package Linux binary
        run: |
          tar czf sqltool-linux.tar.gz -C target/release sqltool
          echo "LINUX_SHA256=$(sha256sum sqltool-linux.tar.gz | cut -d' ' -f1)" >> $GITHUB_ENV

      - name: Upload to GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          files: |
            target/release/sqltool
            sqltool-macos.tar.gz
            sqltool-linux.tar.gz
          checksums: |
            SHA256 checksums.txt
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Publish to crates.io
        uses: katyo/publish-crates@v2
        with:
          crates_token: ${{ secrets.CRATES_IO_TOKEN }}

  publish-sdk-docs:
    runs-on: ubuntu-latest
    needs: release
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Generate documentation
        run: cargo doc --all-features --no-deps --release

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./target/doc
          publish_branch: gh-pages