From df777e86ff45ccb7beb6f53ec9a96f5735efaf29 Mon Sep 17 00:00:00 2001 From: myyrakle Date: Sun, 30 Jun 2024 01:54:53 +0900 Subject: [PATCH] =?UTF-8?q?[#99]=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BB=A4?= =?UTF-8?q?=EB=B2=84=EB=A6=AC=EC=A7=80=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/coverage.yml | 110 +++++++++++++++++++++++++++++++++ .gitignore | 4 +- 2 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/coverage.yml 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