Skip to content

Commit 8122616

Browse files
committed
chore: enable pre-releases for subscriptions
This script should be useful to developers and QE. It might be useful to the occasional customer that would want to validate an upcoming fix in an ephemeral environment.
1 parent a676752 commit 8122616

File tree

1 file changed

+221
-0
lines changed

1 file changed

+221
-0
lines changed

hack/pre-release.sh

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit
4+
set -o nounset
5+
set -o pipefail
6+
7+
SCRIPT_DIR="$(
8+
cd "$(dirname "$0")" >/dev/null
9+
pwd
10+
)"
11+
12+
PROJECT_DIR="$(
13+
cd "$SCRIPT_DIR/.." >/dev/null
14+
pwd
15+
)"
16+
17+
usage() {
18+
echo "
19+
Usage:
20+
${0##*/} [options]
21+
22+
Optional arguments:
23+
-p, --product PRODUCT
24+
The product on which to activate the pre-release subscription.
25+
Can be specified multiple times.
26+
-d, --debug
27+
Activate tracing/debug mode.
28+
-h, --help
29+
Display this message.
30+
31+
Example:
32+
${0##*/}
33+
" >&2
34+
}
35+
36+
parse_args() {
37+
PRODUCT_LIST=()
38+
while [[ $# -gt 0 ]]; do
39+
case $1 in
40+
-p|--product)
41+
case ${2:-} in
42+
developerHub|dh|rhdh)
43+
PRODUCT_LIST+=( "rhdh" )
44+
;;
45+
gitops|pipelines)
46+
PRODUCT_LIST+=( "$2" )
47+
;;
48+
trusted-artifact-signer|tas|rhtas)
49+
PRODUCT_LIST+=( "rhtas" )
50+
;;
51+
"")
52+
echo "[ERROR] Product name needs to be specified after '--product'."
53+
usage
54+
exit 1
55+
;;
56+
*)
57+
echo "[ERROR] Unknown product: $2"
58+
usage
59+
exit 1
60+
;;
61+
esac
62+
shift
63+
;;
64+
-d | --debug)
65+
set -x
66+
DEBUG="--debug"
67+
export DEBUG
68+
;;
69+
-h | --help)
70+
usage
71+
exit 0
72+
;;
73+
*)
74+
echo "[ERROR] Unknown argument: $1"
75+
usage
76+
exit 1
77+
;;
78+
esac
79+
shift
80+
done
81+
}
82+
83+
init() {
84+
SHARED_DIR="$(mktemp -d)"
85+
cd "$SHARED_DIR"
86+
export SHARED_DIR
87+
trap cleanup EXIT
88+
}
89+
90+
cleanup() {
91+
rm -rf "$SHARED_DIR"
92+
}
93+
94+
h1() {
95+
echo "
96+
################################################################################
97+
# $1
98+
################################################################################
99+
"
100+
}
101+
102+
configure_gitops(){
103+
# GITOPS_IIB_IMAGE="quay.io/rhtap_qe/gitops-iib:782137"
104+
105+
SUBSCRIPTION="openshiftGitOps"
106+
CHANNEL="latest"
107+
SOURCE="gitops-iib"
108+
}
109+
110+
configure_pipelines(){
111+
# PIPELINES_IMAGE="quay.io/openshift-pipeline/openshift-pipelines-pipelines-operator-bundle-container-index"
112+
# PIPELINES_IMAGE_TAG="v4.17-candidate"
113+
114+
SUBSCRIPTION="openshiftPipelines"
115+
CHANNEL="latest"
116+
SOURCE="pipelines-iib"
117+
}
118+
119+
configure_rhdh(){
120+
RHDH_INSTALL_SCRIPT="https://raw.githubusercontent.com/redhat-developer/rhdh-operator/main/.rhdh/scripts/install-rhdh-catalog-source.sh"
121+
curl -sSLO $RHDH_INSTALL_SCRIPT
122+
chmod +x install-rhdh-catalog-source.sh
123+
124+
./install-rhdh-catalog-source.sh --latest --install-operator rhdh
125+
126+
SUBSCRIPTION="redHatDeveloperHub"
127+
CHANNEL="fast-1.6"
128+
SOURCE="rhdh-fast"
129+
}
130+
131+
configure_rhtas() {
132+
# Configure CatalogSource
133+
echo '
134+
apiVersion: operators.coreos.com/v1alpha1
135+
kind: CatalogSource
136+
metadata:
137+
name: rhtas-operator
138+
namespace: openshift-marketplace
139+
spec:
140+
sourceType: grpc
141+
grpcPodConfig:
142+
securityContextConfig: legacy
143+
publisher: Red Hat
144+
image: quay.io/securesign/fbc-v4-18@sha256:124d3fcff0c711ba8d03a405a36b0e128a900065e0687885e626e0b4153ec804
145+
displayName: TAS Operator
146+
' \
147+
| oc apply -f -
148+
149+
# Configure ImageDigestMirrorSet
150+
echo '
151+
apiVersion: config.openshift.io/v1
152+
kind: ImageDigestMirrorSet
153+
metadata:
154+
name: registry-stage
155+
spec:
156+
imageDigestMirrors:
157+
- mirrors:
158+
- registry.stage.redhat.io/rhtas
159+
source: registry.redhat.io/rhtas
160+
' \
161+
| oc apply -f -
162+
163+
# Configure pull-secret
164+
DOCKERCONFIGJSON=$(
165+
oc get secrets \
166+
-n openshift-config pull-secret \
167+
-o jsonpath='{.data.\.dockerconfigjson}' \
168+
| base64 -d
169+
)
170+
171+
DOCKERCONFIGJSON=$(
172+
echo "$DOCKERCONFIGJSON" \
173+
| jq -c '.auths."registry.stage.redhat.io" = {
174+
"auth": "MTEwMDkxMDN8cmhhZHM6ZXlKaGJHY2lPaUpTVXpVeE1pSjkuZXlKemRXSWlPaUk0T0RsaE1XWTJPR0ZsWVdVMFptTTNZVE13WWpBNVlXUmpOR1JsWVRneVlpSjkuSXZrVDZqQ001ZU9wUnJQeDVzOVk4NFlaY1NfcWpDX0RpZ0s1bmwtd3NCQ0Y4cGFVdG13b25RbE5GTm9sYXBQTGZUeFFUaWxUUDluYllIRGV4TGxGWnZUWGNRWmg4YllqMmFGOUhZaHR2bFpCbmxpS0tyakNVN24tUE5rb09DY296QmdfN21fZFU4Z1lIUGt4Q3pISC1obG53Y2dneklwMG5jV0xQTDhFTkM4R0lJV2pQZ0t4bm1vTDQ2TUNUUDl6amhNNG5LYUlnT1RuNzdCZGVqRHY4WGRoZVNKRHFJUEEyTjA0TnUwMWhaSE95U3NpX3NCdjR2OThZYllOdFhNLUtHSXdtYWtMcWNZTzFONFUwa0RJaUc5OWdMZ2V0ZGVYT1ZPWkl3ajVpRGFkZXd2cnoxdFlucGZvZ1JhT2pWU3pDcnVBTDkyM1IzdEV2M3FvMjNPWXdXS1hGZlBTMU9YbzBwNFE3YldKRUFmMnEtM1gxM0lOQ19UTmJ3MGZCRHdMS05XN1k2TEVoQmJZVFNZd1BET20tTTJSVXpMQzdKYjV1c2pOZjYxM01XZWt5RmVRVVlJSTNUc0xLeUExQ0s1cE9SdXNFS256MERjZ1lya0V0ZE9ENkVtYjBmdUdNbElhN0JiX1UwZjVxUmszdFFXbWdTejRkQ1VDMXhlM0NDT25kVGU4bDA2RUVzSGVVU2I5NUd0bWtudUVkME03eERZaURjUURRVXlQblhmRFl5WF9xcF9BZ2l1M19meExLcl9LOGplYzJlcHlIUFBFN3FhR2hHeEViVVlUc0dsZ1B0Z0ExUFRlS3h1dklyM0d6ajg4SF85bGVYU1lwR0d5Ujl6dXh1TXVNaFZFS19Jc25OYTl3bHBaTG1RdW0xM1lRelN5ajMtMFVWUEVma3M=",
175+
"email": ""
176+
}'
177+
)
178+
179+
echo "
180+
kind: Secret
181+
apiVersion: v1
182+
metadata:
183+
name: pull-secret
184+
namespace: openshift-config
185+
stringData:
186+
.dockerconfigjson: |
187+
$DOCKERCONFIGJSON
188+
type: kubernetes.io/dockerconfigjson
189+
" \
190+
| oc apply -f -
191+
192+
SUBSCRIPTION="openshiftTrustedArtifactSigner"
193+
CHANNEL="stable-v1.2"
194+
SOURCE="rhtas-operator"
195+
}
196+
197+
configure_subscription(){
198+
# Prepare for pre-release install capabilities
199+
subscription_values_file="$PROJECT_DIR/installer/charts/rhtap-subscriptions/values.yaml"
200+
201+
yq -i "
202+
.subscriptions.$SUBSCRIPTION.channel = \"$CHANNEL\",
203+
.subscriptions.$SUBSCRIPTION.source = \"$SOURCE\"
204+
" "$subscription_values_file"
205+
}
206+
207+
main() {
208+
parse_args "$@"
209+
init
210+
for PRODUCT in $(echo "${PRODUCT_LIST[@]}" | tr " " "\n" | sort); do
211+
h1 "Configuring $PRODUCT"
212+
"configure_$PRODUCT"
213+
configure_subscription
214+
echo
215+
done
216+
echo "Done"
217+
}
218+
219+
if [ "${BASH_SOURCE[0]}" == "$0" ]; then
220+
main "$@"
221+
fi

0 commit comments

Comments
 (0)