Skip to content

Commit 069dd2f

Browse files
authored
Merge pull request #130 from chmeliik/azure-vars
Add script for setting Azure secrets
2 parents fe94b53 + a03f3ca commit 069dd2f

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed

.env.template

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,16 @@ export jenkins_enabled=false
5454
export JENKINS_API_TOKEN=
5555
export JENKINS_URL=
5656
export JENKINS_USERNAME=
57+
58+
#### Azure
59+
# A Personal Access Token with the following permissions:
60+
# Variable Groups (Read, create, & manage)
61+
export AZURE_DEVOPS_EXT_PAT=
62+
# If you have access to https://dev.azure.com/rhtap-test, feel free to use it
63+
export AZURE_ORGANIZATION=rhtap-test
64+
# https://dev.azure.com/rhtap-test/shared-public has unlimited parallel jobs on self-hosted agents.
65+
# If the self-hosted agents are down, you can try 'shared-private' and use a microsoft-hosted agent.
66+
export AZURE_PROJECT=shared-public
67+
# Your RHTAP variables within the project specified above. Keep this unique enough to avoid clashing
68+
# with other users of the same project.
69+
export AZURE_VARIABLE_GROUP_NAME=${USER}-variables

hack/_azure-set-vars.sh

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/bin/bash
2+
set -o errexit -o pipefail
3+
4+
: "${AZURE_DEVOPS_EXT_PAT:?}"
5+
: "${AZURE_VARIABLE_GROUP_NAME:?}"
6+
: "${AZURE_ORGANIZATION:?}"
7+
: "${AZURE_PROJECT:?}"
8+
9+
# Set xtrace after checking variables to avoid logging the PAT
10+
set -o xtrace
11+
12+
# Needed for Azure Pipelines related functionality
13+
az extension add --name azure-devops
14+
15+
az devops configure --defaults \
16+
organization="https://dev.azure.com/$AZURE_ORGANIZATION" \
17+
project="$AZURE_PROJECT"
18+
19+
get_or_create_vargroup() {
20+
local group_name=$1
21+
22+
local group_id
23+
group_id=$(
24+
az pipelines variable-group list --group-name "$group_name" --query '[0].id'
25+
)
26+
27+
if [[ -z $group_id ]]; then
28+
group_id=$(
29+
az pipelines variable-group create \
30+
--name "$group_name" \
31+
--variables unused="need at least one variable in group" \
32+
--authorize true \
33+
--query id
34+
)
35+
fi
36+
37+
echo "$group_id"
38+
}
39+
40+
VARGROUP_ID=$(get_or_create_vargroup "$AZURE_VARIABLE_GROUP_NAME")
41+
if [[ -z $VARGROUP_ID ]]; then
42+
echo "Variable group creation sometimes fails despite succeeding, trying again..." >&2
43+
VARGROUP_ID=$(get_or_create_vargroup "$AZURE_VARIABLE_GROUP_NAME")
44+
fi
45+
46+
set_var() {
47+
local name=$1
48+
local value=$2
49+
local secret=${3:-true}
50+
51+
if [[ -z "$value" ]]; then
52+
# Can't set empty values via the az CLI :/
53+
value=none
54+
fi
55+
56+
local args=(--group-id "${VARGROUP_ID:?}" --name "$name" --value "$value" --secret "$secret")
57+
58+
if ! az pipelines variable-group variable update "${args[@]}"; then
59+
echo "Creating a new variable..." >&2
60+
az pipelines variable-group variable create "${args[@]}"
61+
fi
62+
}
63+
64+
# Don't log secrets
65+
set +o xtrace
66+
67+
set_var ROX_CENTRAL_ENDPOINT "$ROX_CENTRAL_ENDPOINT" false
68+
set_var ROX_API_TOKEN "$ROX_API_TOKEN"
69+
70+
set_var GITOPS_AUTH_PASSWORD "$GITOPS_AUTH_PASSWORD"
71+
72+
set_var QUAY_IO_CREDS_USR "$QUAY_IO_CREDS_USR" false
73+
set_var QUAY_IO_CREDS_PSW "$QUAY_IO_CREDS_PSW"
74+
75+
set_var COSIGN_SECRET_PASSWORD "$COSIGN_SECRET_PASSWORD"
76+
set_var COSIGN_SECRET_KEY "$COSIGN_SECRET_KEY"
77+
set_var COSIGN_PUBLIC_KEY "$COSIGN_PUBLIC_KEY" false
78+
79+
set_var TRUSTIFICATION_BOMBASTIC_API_URL "$TRUSTIFICATION_BOMBASTIC_API_URL" false
80+
set_var TRUSTIFICATION_OIDC_ISSUER_URL "$TRUSTIFICATION_OIDC_ISSUER_URL" false
81+
set_var TRUSTIFICATION_OIDC_CLIENT_ID "$TRUSTIFICATION_OIDC_CLIENT_ID" false
82+
set_var TRUSTIFICATION_OIDC_CLIENT_SECRET "$TRUSTIFICATION_OIDC_CLIENT_SECRET"
83+
set_var TRUSTIFICATION_SUPPORTED_CYCLONEDX_VERSION "$TRUSTIFICATION_SUPPORTED_CYCLONEDX_VERSION" false

hack/azure-set-vars.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
set -o errexit -o nounset -o pipefail
3+
4+
SCRIPTDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
5+
6+
# Find available versions with
7+
# curl https://mcr.microsoft.com/v2/azure-cli/tags/list | jq -r '.tags[]' | sort --version-sort
8+
: "${AZURE_CLI_IMAGE=mcr.microsoft.com/azure-cli:2.69.0}"
9+
10+
podman_extra_args=("$@")
11+
12+
# Mount volumes with SELinux label if necessary
13+
if command -v getenforce > /dev/null && [[ "$(getenforce)" == Enforcing ]]; then
14+
z=":z"
15+
else
16+
z=""
17+
fi
18+
19+
podman run --rm -ti \
20+
--env 'AZURE_*' \
21+
--env 'ROX_*' \
22+
--env 'GITOPS_*' \
23+
--env 'QUAY_*' \
24+
--env 'COSIGN_*' \
25+
--env 'TRUSTIFICATION_*' \
26+
-v "$SCRIPTDIR/_azure-set-vars.sh:/tmp/_azure-set-vars.sh$z" \
27+
"${podman_extra_args[@]}" \
28+
"$AZURE_CLI_IMAGE" \
29+
bash /tmp/_azure-set-vars.sh

0 commit comments

Comments
 (0)