@@ -2,6 +2,10 @@ name: Go Test
22on :
33 workflow_call :
44 inputs :
5+ os-versions :
6+ required : false
7+ type : string
8+ default : ' ["ubuntu", "windows", "macos"]'
59 go-versions :
610 required : false
711 type : string
1014 required : false
1115 type : boolean
1216 default : false
17+ runner-ubuntu :
18+ required : false
19+ type : string
20+ default : ' "ubuntu-latest"'
21+ runner-windows :
22+ required : false
23+ type : string
24+ default : ' "windows-latest"'
25+ runner-macos :
26+ required : false
27+ type : string
28+ default : ' "macos-latest"'
29+ env :
30+ required : false
31+ type : string
1332 secrets :
1433 CODECOV_TOKEN :
1534 required : false
35+ CHECKOUT_TOKEN :
36+ required : false
37+ CHECKOUT_APP_ID :
38+ required : false
39+ CHECKOUT_PRIVATE_KEY :
40+ required : false
1641
1742defaults :
1843 run :
@@ -23,15 +48,40 @@ jobs:
2348 strategy :
2449 fail-fast : false
2550 matrix :
26- os : [ "ubuntu", "windows", "macos" ]
51+ os : ${{ fromJSON(inputs.os-versions) }}
2752 go : ${{ fromJSON(inputs.go-versions) }}
2853 env :
2954 GOTESTFLAGS : -cover -coverprofile=module-coverage.txt -coverpkg=./...
3055 GO386FLAGS : ' '
3156 GORACEFLAGS : ' '
32- runs-on : ${{ fromJSON(vars[format('UCI_GO_TEST_RUNNER_{0}', matrix.os)] || format('" {0}-latest" ', matrix.os)) }}
57+ runs-on : ${{ fromJSON(vars[format('UCI_GO_TEST_RUNNER_{0}', matrix.os)] || inputs[ format('runner- {0}', matrix.os)] ) }}
3358 name : ${{ matrix.os }} (go ${{ matrix.go }})
3459 steps :
60+ - name : Set env
61+ if : ${{ inputs.env }}
62+ env :
63+ ENV : ${{ inputs.env }}
64+ run : |
65+ echo "$ENV" >> $GITHUB_ENV
66+ - name : Inspect secrets
67+ id : secrets
68+ env :
69+ SECRETS : ${{ toJSON(secrets) }}
70+ run : |
71+ while read -r key; do
72+ jq -nr --arg k "$key" --argjson s "$SECRETS" \
73+ 'if ($s[$k] // "") == "" then "false" else "true" end' \
74+ | xargs -I{} echo "$key={}" \
75+ | tee -a "$GITHUB_OUTPUT"
76+ done <<< "$(jq -r 'keys[]' <<< "$SECRETS")"
77+ - name : Create GitHub App installation token
78+ id : checkout-app
79+ if : steps.secrets.outputs.CHECKOUT_APP_ID == 'true' && steps.secrets.outputs.CHECKOUT_PRIVATE_KEY == 'true'
80+ uses : actions/create-github-app-token@v2
81+ with :
82+ app-id : ${{ secrets.CHECKOUT_APP_ID }}
83+ private-key : ${{ secrets.CHECKOUT_PRIVATE_KEY }}
84+ owner : ${{ github.repository_owner }}
3585 - name : Use msys2 on windows
3686 if : matrix.os == 'windows'
3787 # The executable for msys2 is also called bash.cmd
4393 uses : actions/checkout@v5
4494 with :
4595 submodules : recursive
96+ token : ${{ steps.checkout-app.outputs.token || secrets.CHECKOUT_TOKEN }}
4697 - name : Check out the latest stable version of Go
4798 id : stable
4899 uses : actions/setup-go@v5
@@ -144,6 +195,7 @@ jobs:
144195 id : coverages
145196 run : echo "files=$(find . -type f -name 'module-coverage.txt' | tr -s '\n' ',' | sed 's/,$//')" >> $GITHUB_OUTPUT
146197 - name : Upload coverage to Codecov
198+ if : steps.secrets.outputs.CODECOV_TOKEN == 'true'
147199 uses : codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
148200 env :
149201 OS : ${{ matrix.os }}
0 commit comments