Skip to content

Instantly share code, notes, and snippets.

@joelanford
Last active May 1, 2020 14:33
Show Gist options
  • Save joelanford/f7a7d89977638547b410db3eafc35a62 to your computer and use it in GitHub Desktop.
Save joelanford/f7a7d89977638547b410db3eafc35a62 to your computer and use it in GitHub Desktop.
Setup script for github.com/joelanford/bundle-runner example
#!/bin/bash
set -ex
QUAY_PROJECT=joelanford
OPERATOR_NAME=example-operator
#
# 1. Create the project
#
operator-sdk new --type=go ${OPERATOR_NAME} --repo=github.com/${QUAY_PROJECT}/${OPERATOR_NAME}
pushd ${OPERATOR_NAME}
operator-sdk add api --api-version=example.com/v1 --kind=App --crd-version=v1beta1
operator-sdk add controller --api-version=example.com/v1 --kind=App
#
# 2. Build and push the operator image for v0.1.0
#
sed -i "s|0.0.1|0.1.0|g" version/version.go
operator-sdk build quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}:0.1.0
docker push quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}:0.1.0
operatorImageRefV1=$(docker inspect --format='{{index .RepoDigests 0}}' quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}:0.1.0)
#
# 3. Generate the CSV, build and push the bundle image for v0.1.0
#
sed -i "s|REPLACE_IMAGE|$operatorImageRefV1|g" deploy/operator.yaml
operator-sdk generate csv --csv-version=0.1.0
operator-sdk bundle create quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-bundle:0.1.0
docker push quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-bundle:0.1.0
bundleImageRefV1=$(docker inspect --format='{{index .RepoDigests 0}}' quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-bundle:0.1.0)
#
# 4. Build and push the index image
#
opm index add -i quay.io/joelanford/upstream-opm-builder -b $bundleImageRefV1 -c docker -t quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-index:0.1.0
docker push quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-index:0.1.0
indexImageRefV1=$(docker inspect --format='{{index .RepoDigests 0}}' quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-index:0.1.0)
#
# 5. Build and push the operator image for v0.2.0
#
sed -i "s|0.1.0|0.2.0|g" version/version.go
operator-sdk build quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}:0.2.0
docker push quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}:0.2.0
operatorImageRefV2=$(docker inspect --format='{{index .RepoDigests 0}}' quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}:0.2.0)
#
# 6. Generate the CSV, build and push the bundle image for v0.2.0
#
sed -i "s|$operatorImageRefV1|$operatorImageRefV2|g" deploy/operator.yaml
operator-sdk generate csv --csv-version=0.2.0
operator-sdk bundle create quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-bundle:0.2.0
docker push quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-bundle:0.2.0
bundleImageRefV2=$(docker inspect --format='{{index .RepoDigests 0}}' quay.io/${QUAY_PROJECT}/${OPERATOR_NAME}-bundle:0.2.0)
cat <<EOF >${OPERATOR_NAME}.values.yaml
registry:
bundleImage: ${bundleImageRefV2}
indexImage: ${indexImageRefV1}
subscription:
channel: stable
operatorName: ${OPERATOR_NAME}
catalog:
displayName: Example operators
publisher: Operator SDK Team
EOF
popd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment