srs-client 0.2.1

Provides bindings for the main functionalities of the SRS
Documentation
name: CI

on: push

env:
  RUST_BACKTRACE: 1

jobs:

  ##########################
  # Linting and formatting #
  ##########################

  clippy:
    if: ${{ github.ref == 'refs/heads/master'
            || startsWith(github.ref, 'refs/tags/')
            || !contains(github.event.head_commit.message, '[skip ci]') }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          components: clippy

      - uses: Swatinem/rust-cache@v1
        if: ${{ !contains(github.event.head_commit.message, '[fresh ci]') }}

      - run: make lint

  rustfmt:
    if: ${{ github.ref == 'refs/heads/master'
            || startsWith(github.ref, 'refs/tags/')
            || !contains(github.event.head_commit.message, '[skip ci]') }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: nightly
          components: rustfmt

      - run: make cargo.fmt check=yes


  #################
  # Documentation #
  #################

  rustdoc:
    if: ${{ github.ref == 'refs/heads/master'
      || startsWith(github.ref, 'refs/tags/')
      || !contains(github.event.head_commit.message, '[skip ci]') }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable

      - uses: Swatinem/rust-cache@v1
        if: ${{ !contains(github.event.head_commit.message, '[fresh ci]') }}

      - run: make doc

  ########
  # Test #
  ########

  test:
    if: ${{ github.ref == 'refs/heads/master'
            || startsWith(github.ref, 'refs/tags/')
            || !contains(github.event.head_commit.message, '[skip ci]') }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable

      - uses: Swatinem/rust-cache@v2
        if: ${{ !contains(github.event.head_commit.message, '[fresh ci]') }}

      - name: Install cargo-nextest
        uses: taiki-e/install-action@nextest

      - name: Start Docker container
        run: |
          docker run -d -p 1935:1935 -p 1985:1985 -p 8080:8080 ossrs/srs:v5 ./objs/srs -c conf/docker.conf
          # Wait for the container to be ready
          sleep 10

      - name: Run tests
        env:
          SRS_HTTP_API_URL: http://localhost:1985
        run: make test