66 default : default
77 github_app :
88 description : |
9- GitHub app name in Vault
9+ GitHub app name in Vault. You can define mutiple app to do a loadbalancing in a comma separated format.
1010 vault_instance :
1111 description : |
1212 The Vault instance to use (`dev` or `ops`). Defaults to `ops`.
@@ -36,25 +36,27 @@ runs:
3636 REF_SHA=$(echo -n "$RAW_NAME" | sed -E 's|^[^/]*/[^/]*/||' | sed -E 's/@.*//' | sha256sum | awk '{print $1}')
3737 echo "ref_sha=$REF_SHA" >> "$GITHUB_OUTPUT"
3838
39- - id : get-github-jwt-token
39+ - id : get-github-jwt-token-proxy
4040 uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
4141 env :
4242 VAULT_INSTANCE : ${{ inputs.vault_instance }}
4343 with :
4444 script : |
45- const jwt = await core.getIDToken("vault-github-actions-grafana-"+process.env.VAULT_INSTANCE);
46- core.setSecret(jwt);
47- core.setOutput("github-jwt",jwt);
45+ const audience = "vault-github-actions-grafana-" + process.env.VAULT_INSTANCE
46+ const script = require(process.env.GITHUB_ACTION_PATH + '/create_github_token.js')
47+ script({core, audience})
48+ console.log("GitHub token creation done!")
4849
49- - id : get-github-jwt-auth- token
50+ - id : get-github-jwt-token-vault
5051 uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
5152 env :
5253 VAULT_INSTANCE : ${{ inputs.vault_instance }}
5354 with :
5455 script : |
55- const jwt = await core.getIDToken("https://vault-github-actions.grafana-"+process.env.VAULT_INSTANCE+".net");
56- core.setSecret(jwt);
57- core.setOutput("github-jwt",jwt);
56+ const audience = "https://vault-github-actions.grafana-" + process.env.VAULT_INSTANCE + ".net"
57+ const script = require(process.env.GITHUB_ACTION_PATH + '/create_github_token.js')
58+ script({core, audience})
59+ console.log("GitHub token creation done!")
5860
5961 - name : Authenticate with Vault
6062 id : auth-vault
@@ -64,13 +66,11 @@ runs:
6466 REPOSITORY_NAME : ${{ github.event.repository.name }}
6567 PERMISSION_SET : ${{ inputs.permission_set}}
6668 VAULT_URL : " https://vault-github-actions.grafana-${{ inputs.vault_instance }}.net"
69+ GITHUB_JWT_PROXY : ${{ steps.get-github-jwt-token-proxy.outputs.github-jwt }}
70+ GITHUB_JWT_VAULT : ${{ steps.get-github-jwt-token-vault.outputs.github-jwt }}
71+ REF_SHA : ${{ steps.normalize-workflow-name.outputs.ref_sha }}
6772 run : |
68- echo "${REPOSITORY_NAME}-${{ steps.normalize-workflow-name.outputs.ref_sha }}-${PERMISSION_SET}"
69- curl --fail -X POST "${VAULT_URL}/v1/auth/github-actions-oidc/login" \
70- -H "Content-Type: application/json" \
71- -H "Proxy-Authorization-Token: Bearer ${{ steps.get-github-jwt-token.outputs.github-jwt }}" \
72- -d "{\"role\": \"${REPOSITORY_NAME}-${{ steps.normalize-workflow-name.outputs.ref_sha }}-${PERMISSION_SET}\",\"jwt\": \"${{ steps.get-github-jwt-auth-token.outputs.github-jwt }}\"}" \
73- | jq -r '"vault_token=\(.auth.client_token)"' >> $GITHUB_OUTPUT
73+ ${GITHUB_ACTION_PATH}/auth_vault.sh
7474
7575 - name : Get GitHub Token
7676 id : generate-token
8181 PERMISSION_SET : ${{ inputs.permission_set}}
8282 GITHUB_APP : ${{ inputs.github_app }}
8383 VAULT_URL : " https://vault-github-actions.grafana-${{ inputs.vault_instance }}.net"
84+ VAULT_TOKEN : ${{ steps.auth-vault.outputs.vault_token }}
85+ GITHUB_JWT_PROXY : ${{ steps.get-github-jwt-token-proxy.outputs.github-jwt }}
86+ REF_SHA : ${{ steps.normalize-workflow-name.outputs.ref_sha }}
8487 run : |
85- curl --fail "{$VAULT_URL}/v1/github-app-${GITHUB_APP}/token/${REPOSITORY_NAME}-${{ steps.normalize-workflow-name.outputs.ref_sha }}-${PERMISSION_SET}" \
86- -H "X-Vault-Token: ${{ steps.auth-vault.outputs.vault_token }}" \
87- -H "Proxy-Authorization-Token: Bearer ${{ steps.get-github-jwt-token.outputs.github-jwt }}" \
88- | jq -r '"github_token=\(.data.token)"' >> $GITHUB_OUTPUT
88+ ${GITHUB_ACTION_PATH}/create_token.sh
0 commit comments