[Documentation] Cleanup Docs and Workflows #179
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Go Tests | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- release/** | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }} | |
cancel-in-progress: true | |
env: | |
TARGET_GOLANG_VERSION: "1.20.12" | |
jobs: | |
tests: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: "0" | |
- name: Setup go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: ${{ env.TARGET_GOLANG_VERSION }} | |
- name: golangci-lint | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
version: latest | |
args: --timeout=10m | |
skip-cache: true | |
only-new-issues: true | |
- name: Create coverage report and run tests | |
run: | | |
# Run each of the tests (excluding benchmarks) outputting the JSON | |
# to the test_results.json file for usage in later steps. | |
set -euo pipefail | |
go test -v -json -p 1 ./ -mod=readonly -race -coverprofile=coverage.txt -covermode=atomic 2>&1 | tee -a test_results.json | |
- name: Sanitize test results | |
# We're utilizing `tee` above which can capture non-json stdout output | |
# so we need to remove non-json lines before additional parsing and | |
# submitting it to the external github action. | |
run: cat test_results.json | jq -c -R 'fromjson? | select(type == "object")' > tmp.json && mv tmp.json test_results.json | |
- name: Output test failures | |
if: ${{ failure() }} | |
run: | | |
jq --argjson fail_tests "$( \ | |
jq -c -r 'select(.Action == "fail") | select(.Test) | .Test' test_results.json \ | |
| jq -R -s -c 'split("\n") | map(select(length > 0))' \ | |
)" \ | |
'select(.Test as $t | ($fail_tests | arrays)[] | select($t == .)) | select(.Output) | .Output' test_results.json \ | |
| jq -r \ | |
| sed ':a;N;$!ba;s/\n\n/\n/g' > test_failures.json | |
cat test_failures.json | |
exit 1 | |
- name: Upload test results | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-results | |
path: | | |
test_*.json | |
- name: Annotate tests on GitHub | |
uses: guyarb/[email protected] | |
with: | |
test-results: test_results.json | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./coverage.txt | |
verbose: true |