diff --git a/.github/workflows/grcov.yml b/.github/workflows/grcov.yml deleted file mode 100644 index 60e8dd8..0000000 --- a/.github/workflows/grcov.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: coverage - -on: - push: - pull_request: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - CARGO_TERM_COLOR: always - -jobs: - grcov: - name: Coverage - runs-on: ubuntu-latest - steps: - - name: Checkout source code - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: latest - - name: Install npm dependencies - run: npm ci - - name: Build WebUI - run: npm run build - - name: Setup ffmpeg - uses: AnimMouse/setup-ffmpeg@v1 - - name: Show version information - run: | - ffmpeg -version - ffprobe -version - - name: Install cargo-llvm-cov - uses: taiki-e/install-action@cargo-llvm-cov - - name: Generate code coverage - run: cargo llvm-cov --all-features --lcov --output-path lcov.info - - name: Upload coverage to codecov.io - uses: codecov/codecov-action@v4 - with: - file: lcov.info - fail_ci_if_error: true - token: ${{ secrets.CODECOV_TOKEN }} - diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a45f665..a0793a9 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,16 +1,12 @@ -name: Rust +name: CI -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] +on: [ push, pull_request ] env: CARGO_TERM_COLOR: always jobs: - build: + test: strategy: fail-fast: false matrix: @@ -18,8 +14,62 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Checkout source code + uses: actions/checkout@v4 + - name: Setup ffmpeg + uses: AnimMouse/setup-ffmpeg@v1 + - name: Show version information + run: | + ffmpeg -version + ffprobe -version + - name: Install grcov + run: cargo install grcov + - name: Run tests + run: cargo test --all --verbose + env: + CARGO_INCREMENTAL: "0" + RUSTFLAGS: '-Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Zpanic_abort_tests -Cpanic=abort -Cdebug-assertions=off -Cprofile-generate=target/debug' + + - name: Generate coverage data + run: | + grcov target/debug/ \ + --branch \ + --llvm \ + --source-dir . \ + --output-path lcov.info \ + --ignore='/**' \ + --ignore='C:/**' \ + --ignore='../**' \ + --ignore-not-existing \ + --excl-line "#\\[derive\\(" \ + --excl-br-line "#\\[derive\\(" \ + --excl-start "#\\[cfg\\(test\\)\\]" \ + --excl-br-start "#\\[cfg\\(test\\)\\]" \ + --commit-sha ${{ github.sha }} \ + --service-job-id ${{ github.job }} \ + --service-name "GitHub Actions" \ + --service-number ${{ github.run_id }} + + - name: Upload coverage to codecov.io + uses: codecov/codecov-action@v4 + with: + file: lcov.info + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + + e2e: + needs: [test, check_format, check_clippy] + strategy: + fail-fast: false + matrix: + os: [ macos-latest, windows-latest, ubuntu-latest ] + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout source code + uses: actions/checkout@v4 + - name: Setup Nodejs + uses: actions/setup-node@v4 with: node-version: latest - name: Install npm dependencies @@ -34,8 +84,6 @@ jobs: run: | ffmpeg -version ffprobe -version - - name: Run tests - run: cargo test --all --verbose - name: Run e2e tests if: ${{ matrix.os != 'windows-latest' }} run: npm run e2e:cluster @@ -43,7 +91,8 @@ jobs: check_format: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout source code + uses: actions/checkout@v4 - name: Show version information run: | cargo --version @@ -55,7 +104,8 @@ jobs: check_clippy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout source code + uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: latest