diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index 5acf786..d0a2c1d 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -15,14 +15,12 @@ jobs: with: go-version: 'stable' - name: Run tests - run: go test -race -coverprofile=coverage.txt ./... - + run: go test -race -coverprofile=coverage.out ./... - name: Check coverage - uses: vladopajic/go-test-coverage@v2 - with: - config: ./.testcoverage.yml - - # Download baseline coverage from main branch (for PRs) + id: coverage + run: | + go install github.com/vladopajic/go-test-coverage/v2@latest + go-test-coverage --config ./.testcoverage.yml --github-action-output - name: Download baseline coverage if: gitea.event_name == 'pull_request' uses: actions/download-artifact@v3 @@ -30,14 +28,12 @@ jobs: name: coverage-baseline path: ./baseline continue-on-error: true - - # Compare coverage against baseline (for PRs) - name: Compare coverage if: gitea.event_name == 'pull_request' run: | - CURRENT=$(go tool cover -func=coverage.txt | grep "^total:" | awk '{print $NF}' | tr -d '%') + CURRENT="${{ steps.coverage.outputs.total-coverage }}" if [ -f ./baseline/coverage.txt ]; then - BASE=$(go tool cover -func=./baseline/coverage.txt | grep "^total:" | awk '{print $NF}' | tr -d '%') + BASE=$(cat ./baseline/coverage.txt) echo "Base coverage: ${BASE}%" echo "Current coverage: ${CURRENT}%" if [ "$(echo "$CURRENT < $BASE" | bc -l)" -eq 1 ]; then @@ -49,8 +45,9 @@ jobs: echo "No baseline coverage found, skipping comparison" echo "Current coverage: ${CURRENT}%" fi - - # Upload coverage as baseline (only on main) + - name: Save coverage baseline + if: gitea.ref == 'refs/heads/main' + run: echo "${{ steps.coverage.outputs.total-coverage }}" > coverage.txt - name: Upload coverage baseline if: gitea.ref == 'refs/heads/main' uses: actions/upload-artifact@v3 @@ -58,19 +55,17 @@ jobs: name: coverage-baseline path: coverage.txt retention-days: 90 - - # Post coverage to PR comment - name: Post coverage comment if: gitea.event_name == 'pull_request' env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GITEA_URL: ${{ gitea.server_url }} run: | - COVERAGE=$(go tool cover -func=coverage.txt | grep "^total:" | awk '{print $NF}') + COVERAGE="${{ steps.coverage.outputs.total-coverage }}" curl -X POST "${GITEA_URL}/api/v1/repos/${{ gitea.repository }}/issues/${{ gitea.event.pull_request.number }}/comments" \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ - -d "{\"body\": \"## Coverage Report\n\nTotal coverage: **${COVERAGE}**\"}" + -d "{\"body\": \"## Coverage Report\n\nTotal coverage: **${COVERAGE}%**\"}" vulnerabilities: runs-on: ubuntu-latest diff --git a/.testcoverage.yml b/.testcoverage.yml index 7aec8b6..387639d 100644 --- a/.testcoverage.yml +++ b/.testcoverage.yml @@ -1,7 +1,7 @@ # Coverage configuration for go-test-coverage # https://github.com/vladopajic/go-test-coverage -profile: coverage.txt +profile: coverage.out threshold: file: 0 diff --git a/CLAUDE.md b/CLAUDE.md index 5ec80bd..892391e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -50,4 +50,4 @@ Pre-commit hooks enforce: ## CI/CD -GitLab CI pipeline runs: dependency download → tests with race detector → vulnerability scanning → Codecov upload. +Self-hosted Gitea Actions (`.gitea/workflows/`) run: dependency download → tests with race detector → coverage check → vulnerability scanning → coverage baseline upload/comparison.