diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 959c2e88..ad0f1664 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -20,9 +20,9 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
- go-version: 1.21
+ go-version: '1.21'
- - name: Download
+ - name: Download dependencies
run: go mod download
lint:
@@ -34,13 +34,13 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
- go-version: 1.21
+ go-version: '1.21'
- name: Static Analysis
run: go vet ./...
- name: Check Formatting
- run: if [ "$(gofmt -s -l -e . | wc -l)" -gt 0 ]; then exit 1; fi
+ run: test -z "$(gofmt -s -l -e .)"
build:
needs: download
@@ -51,10 +51,12 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
- go-version: 1.21
+ go-version: '1.21'
- name: Build
- run: CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags='-w -s -extldflags "-static"' -tags netgo -o validator cmd/validator/validator.go
+ run: |
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
+ go build -ldflags='-w -s -extldflags "-static"' -tags netgo -o validator cmd/validator/validator.go
test:
needs: download
@@ -69,29 +71,28 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
- go-version: 1.21
+ go-version: '1.21'
- name: Unit test
run: go test -v -cover -coverprofile coverage.out ./...
- name: Check coverage
id: check-coverage
+ env:
+ COVERAGE_THRESHOLD: 95
run: |
# Validate that the coverage is above or at the required threshold
echo "Checking if test coverage is above threshold ..."
- echo "Coverage threshold: $COVERAGE_THRESHOLD %"
- totalCoverage=`go tool cover -func coverage.out | grep total | grep -Eo '[0-9]+\.[0-9]+'`
- echo "Current test coverage : $totalCoverage %"
- if (( $(echo "$COVERAGE_THRESHOLD <= $totalCoverage" | bc -l) )); then
- echo "Coverage OK"
+ echo "Coverage threshold: ${COVERAGE_THRESHOLD} %"
+ totalCoverage=$(go tool cover -func coverage.out | grep 'total' | grep -Eo '[0-9]+\.[0-9]+')
+ echo "Current test coverage : ${totalCoverage} %"
+ if (( $(echo "${COVERAGE_THRESHOLD} <= ${totalCoverage}" | bc -l) )); then
+ echo "Coverage OK"
else
echo "Current test coverage is below threshold"
exit 1
fi
-
- echo "total_coverage=$totalCoverage" >> "$GITHUB_OUTPUT"
- env:
- COVERAGE_THRESHOLD: 95
+ echo "total_coverage=${totalCoverage}" >> "${GITHUB_OUTPUT}"
- name: Create badge img tag and apply to README files
id: generate-badge
@@ -100,31 +101,31 @@ jobs:
# Badge will always be green because of coverage threshold check
# so we just have to populate the total coverage
totalCoverage=${{ steps.check-coverage.outputs.total_coverage }}
- BADGE_URL=https://img.shields.io/badge/Coverage-$totalCoverage%25-brightgreen
- BADGE_IMG_TAG=""
+ BADGE_URL="https://img.shields.io/badge/Coverage-${totalCoverage}%25-brightgreen"
+ BADGE_IMG_TAG=""
# Update README.md and index.md
for markdown_file in README.md index.md; do
- sed -i "/id=\"cov\"/c\\${BADGE_IMG_TAG}" $markdown_file
+ sed -i "/id=\"cov\"/c\\${BADGE_IMG_TAG}" "${markdown_file}"
done
# Check to see if files were updated
- if [[ `git status --porcelain` ]]; then
- echo "badge_updates=true" >> "$GITHUB_OUTPUT"
+ if git diff --quiet; then
+ echo "badge_updates=true" >> "${GITHUB_OUTPUT}"
else
- echo "badge_updates=false" >> "$GITHUB_OUTPUT"
+ echo "badge_updates=false" >> "${GITHUB_OUTPUT}"
fi
- name: Commit changes
- if: steps.generate-badge.outputs.badge_updates == 'true' && github.event_name != 'pull_request'
+ if: steps.generate-badge.outputs.badge_updates == 'true' && github.event_name == 'push'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
- git add README.md index.md
+ git add -- README.md index.md
git commit -m "chore: Updated coverage badge."
- name: Push changes
- if: steps.generate-badge.outputs.badge_updates == 'true' && github.event_name != 'pull_request'
+ if: steps.generate-badge.outputs.badge_updates == 'true' && github.event_name == 'push'
uses: ad-m/github-push-action@master
with:
github_token: ${{ github.token }}