diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..655fd883 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,110 @@ +name: Test & Coverage + +on: + pull_request: + +permissions: # Job-level permissions configuration starts here + contents: write # 'write' access to repository contents + pull-requests: write # 'write' access to pull requests + +jobs: + check: + name: Rust project + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + + - name: Cache Cargo's directories + uses: actions/cache@v4 + with: + save-always: true + key: coverage-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + path: | + ./target + ~/.cargo + ~/.cargo/registry + ~/.cargo/git + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + + - 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 target repository + uses: actions/checkout@v4 + with: + token: ${{ secrets.GH_TOKEN }} + repository: myyrakle/html_reports + ref: master + path: ./html_reports + persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token. + + - 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 | + cd ./html_reports | + ls -lah + + - name: Init + working-directory: html_reports + run: | + git init | + git branch master | + git switch master | + echo "init success" + + - name: Add + working-directory: html_reports + run: | + ls -lah | + git add . | + echo "add success" + + - name: Configure git + working-directory: html_reports + run: | + git config --local user.email "sssang97@naver.com" | + git config --local user.name "myyrakle" + + - name: Commit + working-directory: html_reports + run: | + ls -lah | + git commit -m "Add report" | + echo "commit success" + + # - name: Prepair Push + # run: | + # echo "GITHUB_TOKEN=${{ secrets.GH_TOKEN }}" >> $GITHUB_ENV + # git push -f https://myyrakle:${{ secrets.REPORTS_GH_TOKEN }}@github.com/myyrakle/html_reports master + + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GH_TOKEN }} + repository: myyrakle/html_reports + force: true + ref: master + + - 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