diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..7080954f --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,57 @@ +name: Test & Coverage + +on: + pull_request: + +jobs: + check: + name: Rust project + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + + - name: Cache Cargo's directories + uses: actions/cache@v3 + with: + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + path: | + ./target + ~/.cargo + + - name: Install cargo-tarpaulin + run: cargo install cargo-tarpaulin + + - name: Run cargo-tarpaulin + run: | + cargo tarpaulin -l --out Html | tail -n 1 | grep -o '[^+][0-9]\+\.[0-9]\+%' > coverage_total_pecent.txt | + AVG_COVERAGE=$(cat coverage_total_pecent.txt) | + echo "COVERAGE=$AVG_COVERAGE" >> $GITHUB_ENV + + - name: Checkout report repository + uses: actions/checkout@v2 + with: + repository: myyrakle/html_reports + token: ${{ secrets.REPORTS_GH_TOKEN }} + path: ./html_reports + + - name: Copy coverage report + run: | + random_report_name = $(date +%s) | + echo "REPORT_NAME=$random_report_name" >> $GITHUB_ENV | + cp ./tarpaulin-report.html ./html_reports/$random_report_name.html | + git add . | + git commit -m "Add report $random_report_name" | + git push + + - name: Add comment to PR + uses: thollander/actions-comment-pull-request@v1 + with: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + message: | + ✅ **Total Coverage**: ${{ env.COVERAGE }} | + ![🔗 Coverage View](https://myyrakle.github.io/html_reports/${{ env.REPORT_NAME }}) \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2370ccbb..4151c3fb 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,6 @@ Cargo.lock .rrdb.config -.vscode \ No newline at end of file +.vscode + +tarpaulin-report.html \ No newline at end of file