torrust-tracker 3.0.0-alpha.2

A feature rich BitTorrent tracker.
Documentation
name: CI

# Only trigger, when the test workflow succeeded
on: [push, pull_request]

jobs:
  format:
    runs-on: ubuntu-latest
    env:
      CARGO_TERM_COLOR: always
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: nightly
          components: rustfmt, clippy
      - uses: Swatinem/rust-cache@v2
      - name: Check Rust Formatting
        run: cargo fmt --check

  test:
    needs: format
    runs-on: ubuntu-latest
    env:
      CARGO_TERM_COLOR: always
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable
          components: llvm-tools-preview
      - uses: Swatinem/rust-cache@v2
      - name: Check Rust Code
        run: cargo check --all-targets
      - name: Clippy Rust Code
        run: cargo clippy --all-targets -- -D clippy::pedantic
      - name: Test Documentation
        run: cargo test --doc
      - name: Run Tests
        run: cargo test --workspace        
      - uses: taiki-e/install-action@cargo-llvm-cov
      - uses: taiki-e/install-action@nextest
      - name: Show coverage
        run: cargo llvm-cov nextest

  build:
    needs: test
    if: |
      github.event_name == 'push' &&
      github.event.base_ref == 'refs/heads/main' &&
      startsWith(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    env:
      CARGO_TERM_COLOR: always
    steps:
      - uses: actions/checkout@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: stable
      - uses: Swatinem/rust-cache@v2
      - name: Build Torrust Tracker
        run: cargo build --release
      - name: Upload Build Artifact
        uses: actions/upload-artifact@v3
        with:
          name: torrust-tracker
          path: ./target/release/torrust-tracker

  release:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Download Build Artifact
        uses: actions/download-artifact@v3
        with:
          name: torrust-tracker
      - name: Release
        uses: softprops/action-gh-release@v1
#        with:
#          files: |
#            torrust-tracker