ci: add debug output to Kanidm token exchange step
Some checks failed
Deploy to K8s / deploy (push) Failing after 7s
Some checks failed
Deploy to K8s / deploy (push) Failing after 7s
Capture HTTP status code and full response body separately so failures show the actual error from the server instead of silently dying. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -42,16 +42,31 @@ jobs:
|
|||||||
- name: Exchange for K8s OIDC token via Kanidm
|
- name: Exchange for K8s OIDC token via Kanidm
|
||||||
id: k8s
|
id: k8s
|
||||||
run: |
|
run: |
|
||||||
RESPONSE=$(curl -sf -X POST "https://idm.home.hrajfrisbee.cz/oauth2/token" \
|
API_TOKEN="${{ steps.vault.outputs.api_token }}"
|
||||||
|
echo "api_token length: ${#API_TOKEN}" >&2
|
||||||
|
echo "api_token prefix (first 8 chars): ${API_TOKEN:0:8}..." >&2
|
||||||
|
|
||||||
|
HTTP_BODY=$(mktemp)
|
||||||
|
HTTP_STATUS=$(curl -sS -X POST "https://idm.home.hrajfrisbee.cz/oauth2/token" \
|
||||||
-d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
|
-d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
|
||||||
-d "client_id=k8s" \
|
-d "client_id=k8s" \
|
||||||
-d "subject_token=${{ steps.vault.outputs.api_token }}" \
|
-d "subject_token=${API_TOKEN}" \
|
||||||
-d "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \
|
-d "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \
|
||||||
-d "audience=k8s" \
|
-d "audience=k8s" \
|
||||||
-d "scope=openid groups")
|
-d "scope=openid groups" \
|
||||||
|
-o "$HTTP_BODY" -w "%{http_code}")
|
||||||
|
|
||||||
ID_TOKEN=$(echo "$RESPONSE" | jq -r '.id_token')
|
echo "HTTP status: $HTTP_STATUS" >&2
|
||||||
[ "$ID_TOKEN" != "null" ] && [ -n "$ID_TOKEN" ] || { echo "::error::Kanidm token exchange failed"; echo "$RESPONSE" | jq . >&2; exit 1; }
|
echo "Response body:" >&2
|
||||||
|
cat "$HTTP_BODY" >&2
|
||||||
|
|
||||||
|
RESPONSE=$(cat "$HTTP_BODY")
|
||||||
|
ID_TOKEN=$(echo "$RESPONSE" | jq -r '.id_token // empty')
|
||||||
|
|
||||||
|
if [ -z "$ID_TOKEN" ]; then
|
||||||
|
echo "::error::Kanidm token exchange failed (HTTP $HTTP_STATUS)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "::add-mask::${ID_TOKEN}"
|
echo "::add-mask::${ID_TOKEN}"
|
||||||
echo "id_token=${ID_TOKEN}" >> "$GITHUB_OUTPUT"
|
echo "id_token=${ID_TOKEN}" >> "$GITHUB_OUTPUT"
|
||||||
|
|||||||
Reference in New Issue
Block a user