-
-
Save grahamc/d39a584cf5ab77d0a7b7fd6ce8a6ba20 to your computer and use it in GitHub Desktop.
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
#!/bin/sh | |
# input: vault//path:rolename:251358111@github.com/Org/Repo.git | |
# vaultpath ^ ^ ^ request token for this repo ID | |
# \- token login to this role | |
# convert it in to vvvvvvvvvvvvvvvv | |
# https://x-access-token:$(vault write -field token /github/token repository_ids=251358111 permissions=contents=read)@github.com/Org/Repo.git | |
target=$2 | |
set -eu | |
stripped=$(echo "$target" | sed -e 's#^vault://##') | |
httpuser=x-access-token | |
vaultpath=$(echo "$stripped" | cut -d: -f1) | |
role=$(echo "$stripped" | cut -d: -f2) | |
repoid=$(echo "$stripped" | cut -d: -f3 | cut -d@ -f1) | |
repo=$(echo "$stripped" | cut -d@ -f2-) | |
echo "---> Provisioning ephemeral token for $repo" >&2 | |
vault_creds=$(vault token create \ | |
-display-name=buildkite \ | |
-format=json \ | |
-role "$role") | |
VAULT_TOKEN=$(jq -r .auth.client_token <<<"$vault_creds") | |
export VAULT_TOKEN | |
finish() { | |
echo "--> Revoking my token..." >&2 | |
vault token revoke -self >&2 | |
} | |
trap finish EXIT | |
token=$(vault write -field token "/$vaultpath/token" "repository_ids=$repoid" permissions=contents=read) | |
set +e | |
git remote-https "$1" "https://$httpuser:$token@$repo" | |
exitcode=$? | |
echo " ... expiring token" >&2 | |
exit $exitcode |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment