Skip to content

Commit 69ffa99

Browse files
author
Codex CLI
committed
ci: fallback to SONAR_TOKEN secret if Key Vault token is invalid
1 parent 7f171fa commit 69ffa99

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

.github/workflows/sonarcloud.yml

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,36 @@ jobs:
2727
tenant-id: ${{ vars.AZURE_TENANT_ID }}
2828
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
2929

30-
- name: Read SonarCloud token from Key Vault
30+
- name: Resolve SonarCloud token
3131
shell: bash
32+
env:
33+
FALLBACK_SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
3234
run: |
33-
SONAR_TOKEN="$(az keyvault secret show \
35+
KV_SONAR_TOKEN="$(az keyvault secret show \
3436
--vault-name "${{ vars.AZURE_KEYVAULT_NAME }}" \
3537
--name "sonar-cloud-token" \
36-
--query value -o tsv)"
38+
--query value -o tsv 2>/dev/null || true)"
39+
40+
TOKEN_SOURCE=""
41+
if [ -n "${KV_SONAR_TOKEN}" ]; then
42+
KV_VALID="$(curl -sS -u "${KV_SONAR_TOKEN}:" https://sonarcloud.io/api/authentication/validate | grep -Eo 'true|false' | head -n1 || true)"
43+
if [ "${KV_VALID}" = "true" ]; then
44+
SONAR_TOKEN="${KV_SONAR_TOKEN}"
45+
TOKEN_SOURCE="keyvault"
46+
fi
47+
fi
48+
49+
if [ -z "${TOKEN_SOURCE}" ] && [ -n "${FALLBACK_SONAR_TOKEN:-}" ]; then
50+
SONAR_TOKEN="${FALLBACK_SONAR_TOKEN}"
51+
TOKEN_SOURCE="github-secret-fallback"
52+
fi
53+
54+
if [ -z "${TOKEN_SOURCE}" ]; then
55+
echo "No valid Sonar token found in Key Vault and no fallback secret available."
56+
exit 1
57+
fi
58+
59+
echo "::notice title=Sonar token source::${TOKEN_SOURCE}"
3760
echo "::add-mask::$SONAR_TOKEN"
3861
echo "SONAR_TOKEN=$SONAR_TOKEN" >> "$GITHUB_ENV"
3962

0 commit comments

Comments
 (0)