eventdbx 1.7.13

An event-sourced, key-value, write-side database system.
Documentation
name: CI

permissions:
  contents: write
  
on:
  push:
    branches: [main]
    tags:
      - "v*"
  pull_request:
  workflow_dispatch:
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]

    steps:
      - name: Check out repository
        uses: actions/checkout@v4

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

      - name: Cache Cargo registry
        uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-cargo-

      - name: Cargo fmt
        run: cargo fmt -- --check

      - name: Cargo check
        run: cargo check

      - name: Cargo test
        run: cargo test

  create_release:
    needs: build
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.release.outputs.upload_url }}
    steps:
      - name: Create GitHub release
        id: release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref_name }}
          draft: false
          prerelease: false
          body: |
            ## Downloads
            - [Linux (Ubuntu)](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/eventdbx-ubuntu-latest.tar.gz)
            - [macOS](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/eventdbx-macos-latest.tar.gz)
            - [Windows](https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/eventdbx-windows-latest.zip)

  publish_binaries:
    needs: create_release
    if: startsWith(github.ref, 'refs/tags/')
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

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

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

      - name: Package binary (Unix)
        if: runner.os != 'Windows'
        run: |
          mkdir -p dist
          cp target/release/eventdbx dist/
          tar -czf eventdbx-${{ matrix.os }}.tar.gz -C dist eventdbx

      - name: Package binary (Windows)
        if: runner.os == 'Windows'
        shell: pwsh
        run: |
          New-Item -ItemType Directory -Force -Path dist | Out-Null
          Copy-Item target\release\eventdbx.exe dist\
          Compress-Archive -Path dist\eventdbx.exe -DestinationPath eventdbx-${{ matrix.os }}.zip

      - name: Upload release asset (Unix)
        if: runner.os != 'Windows'
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_path: eventdbx-${{ matrix.os }}.tar.gz
          asset_name: eventdbx-${{ matrix.os }}.tar.gz
          asset_content_type: application/gzip

      - name: Upload release asset (Windows)
        if: runner.os == 'Windows'
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.create_release.outputs.upload_url }}
          asset_path: eventdbx-${{ matrix.os }}.zip
          asset_name: eventdbx-${{ matrix.os }}.zip
          asset_content_type: application/zip