Refactor dist config to a common module

This commit is contained in:
andreaTP
2022-05-10 14:25:01 +01:00
committed by Pedro Igor
parent bc59fad85b
commit d66710205c
104 changed files with 920 additions and 381 deletions

View File

@@ -1,5 +0,0 @@
ARG IMAGE=keycloak
ARG VERSION=latest
FROM $IMAGE:$VERSION
RUN /opt/keycloak/bin/kc.sh build --db=postgres --health-enabled=true

View File

@@ -1,15 +0,0 @@
#! /bin/bash
set -euxo pipefail
VERSION="${1:-latest}"
KEYCLOAK_IMAGE="${2:-quay.io/keycloak/keycloak}"
KEYCLOAK_CUSTOM_IMAGE="${3:-quay.io/keycloak/custom-keycloak}"
echo "Using version: $VERSION"
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
docker build -f ${SCRIPT_DIR}/Dockerfile-custom-image \
--build-arg IMAGE=${KEYCLOAK_IMAGE} \
--build-arg VERSION=${VERSION} \
-t ${KEYCLOAK_CUSTOM_IMAGE}:${VERSION} ${SCRIPT_DIR}

View File

@@ -1,19 +0,0 @@
#! /bin/bash
set -euxo pipefail
max_retries=240
c=0
while ! kubectl get keycloaks
do
echo "waiting for Keycloak CRD"
((c++)) && ((c==max_retries)) && exit -1
sleep 1
done
c=0
while ! kubectl get keycloakrealmimports
do
echo "waiting for Keycloak Realm Import CRD"
((c++)) && ((c==max_retries)) && exit -1
sleep 1
done

View File

@@ -1,19 +0,0 @@
#! /bin/bash
set -euxo pipefail
max_retries=500
c=0
while [[ $(kubectl get keycloaks/example-kc -o jsonpath="{.status.conditions[?(@.type == 'Ready')].status}") != "true" ]]
do
echo "waiting for Keycloak example-kc status"
((c++)) && ((c==max_retries)) && exit -1
sleep 1
done
c=0
while [[ $(kubectl get keycloakrealmimports/example-count0-kc -o jsonpath="{.status.conditions[?(@.type == 'Done')].status}") != "true" ]]
do
echo "waiting for Keycloak Realm Import example-count0-kc status"
((c++)) && ((c==max_retries)) && exit -1
sleep 1
done

View File

@@ -1,40 +0,0 @@
#! /bin/bash
set -euxo pipefail
VERSION=$1
REPLACES_VERSION=$2
OPERATOR_DOCKER_IMAGE=$3
CREATED_AT=$(date "+%D %T")
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
echo "Creating OLM bundle for version $VERSION replacing version $REPLACES_VERSION"
rm -rf $SCRIPT_DIR/../olm/$VERSION
mkdir -p $SCRIPT_DIR/../olm/$VERSION
cp -r $SCRIPT_DIR/../olm-base/* $SCRIPT_DIR/../olm/$VERSION
# Inject RBAC rules
yq ea '.rules as $item ireduce ({}; .rules += $item)' $SCRIPT_DIR/../target/kubernetes/kubernetes.yml | \
yq ea -i 'select(fileIndex==0).spec.install.spec.permissions[0] = select(fileIndex==1) | select(fileIndex==0)' $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml - && \
yq ea -i '.spec.install.spec.permissions[0].serviceAccountName = "keycloak-operator"' $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml && \
yq ea -i ".metadata.annotations.containerImage = \"$OPERATOR_DOCKER_IMAGE:$VERSION\"" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml && \
yq ea -i ".metadata.annotations.createdAt = \"$CREATED_AT\"" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml && \
yq ea -i ".metadata.name = \"keycloak-operator.v$VERSION\"" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml && \
yq ea -i ".spec.install.spec.deployments[0].spec.template.spec.containers[0].image = \"$OPERATOR_DOCKER_IMAGE:$VERSION\"" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml && \
yq ea 'select(.spec.template.spec.containers[0].env) | .spec.template.spec.containers[0].env[-1]' $SCRIPT_DIR/../target/kubernetes/kubernetes.yml | \
yq ea -i 'select(fileIndex==0).spec.install.spec.deployments[0].spec.template.spec.containers[0].env += select(fileIndex==1) | select(fileIndex==0)' $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml - && \
yq ea -i ".spec.version = \"$VERSION\"" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml
if [[ $REPLACES_VERSION = "NONE" ]]
then
yq ea -i "del(.spec.replaces)" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml
else
yq ea -i ".spec.replaces = \"keycloak-operator.v$REPLACES_VERSION\"" $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml
fi
mv $SCRIPT_DIR/../olm/$VERSION/manifests/clusterserviceversion.yaml "$SCRIPT_DIR/../olm/$VERSION/manifests/keycloak-operator.v$VERSION.clusterserviceversion.yaml"
cp target/kubernetes/*.keycloak.org-v1.yml olm/$VERSION/manifests

View File

@@ -1,34 +0,0 @@
#! /bin/bash
set -euxo pipefail
VERSION=$1
BUNDLE_IMAGE=$2
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
rm -rf $SCRIPT_DIR/../olm/catalog
mkdir -p $SCRIPT_DIR/../olm/catalog/test-catalog
(
cd $SCRIPT_DIR/../olm/catalog
opm generate dockerfile test-catalog
opm init keycloak-operator \
--default-channel=alpha \
--output yaml > test-catalog/operator.yaml
opm render $BUNDLE_IMAGE:$VERSION \
--output=yaml >> test-catalog/operator.yaml
cat << EOF >> test-catalog/operator.yaml
---
schema: olm.channel
package: keycloak-operator
name: alpha
entries:
- name: keycloak-operator.v$VERSION
EOF
opm validate test-catalog
)

View File

@@ -1,53 +0,0 @@
#! /bin/bash
set -euxo pipefail
VERSION=$1
DOCKER_REGISTRY=$2
UUID=${3:-""}
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
rm -rf $SCRIPT_DIR/../olm/testing-resources
mkdir -p $SCRIPT_DIR/../olm/testing-resources
cat << EOF >> $SCRIPT_DIR/../olm/testing-resources/catalog.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: test-catalog
namespace: default
spec:
sourceType: grpc
image: $DOCKER_REGISTRY/${UUID}keycloak-test-catalog:$VERSION
displayName: Keycloak Test Catalog
publisher: Me
updateStrategy:
registryPoll:
interval: 10m
EOF
cat << EOF >> $SCRIPT_DIR/../olm/testing-resources/operatorgroup.yaml
kind: OperatorGroup
apiVersion: operators.coreos.com/v1
metadata:
name: og-single
namespace: default
spec:
targetNamespaces:
- default
EOF
cat << EOF >> $SCRIPT_DIR/../olm/testing-resources/subscription.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: keycloak-operator
namespace: default
spec:
installPlanApproval: Automatic
name: keycloak-operator
source: test-catalog
sourceNamespace: default
startingCSV: keycloak-operator.v$VERSION
EOF

View File

@@ -1,22 +0,0 @@
#! /bin/bash
set -euxo pipefail
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# Delete the default catalog if it exists
sh -c "kubectl delete catalogsources operatorhubio-catalog -n olm | true"
kubectl apply -f $SCRIPT_DIR/../olm/testing-resources/catalog.yaml
# Wait for the catalog to be healthy
max_retries=200
c=0
while [[ $(kubectl get catalogsources test-catalog -o jsonpath="{.status.connectionState.lastObservedState}") != "READY" ]]
do
echo "waiting for the test-catalog to be ready"
((c++)) && ((c==max_retries)) && exit -1
sleep 1
done
kubectl apply -f $SCRIPT_DIR/../olm/testing-resources/operatorgroup.yaml
kubectl apply -f $SCRIPT_DIR/../olm/testing-resources/subscription.yaml

View File

@@ -1,7 +0,0 @@
#! /bin/bash
set -euxo pipefail
mkdir -p /tmp/olm/
curl -L https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.20.0/install.sh -o /tmp/olm/install.sh
chmod +x /tmp/olm/install.sh
/tmp/olm/install.sh v0.20.0

View File

@@ -1,33 +0,0 @@
#! /bin/bash
set -euxo pipefail
UUID=${1:-$(git rev-parse --short HEAD)}
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
# This version translates to one day for ttl.sh
VERSION="86400000.0.0"
# Build Keycloak Docker image (the keycloak tar.gz should already be in the container folder)
(
cd $SCRIPT_DIR/../../quarkus/container
docker build --build-arg KEYCLOAK_DIST=$(ls keycloak-*.tar.gz) . -t "ttl.sh/${UUID}keycloak:${VERSION}"
docker push "ttl.sh/${UUID}keycloak:${VERSION}"
)
# Build the operator Docker image
(
cd $SCRIPT_DIR/../
mvn clean package \
-Dquarkus.container-image.build=true \
-Dquarkus.container-image.image="ttl.sh/${UUID}keycloak-operator:${VERSION}" \
-Doperator.keycloak.image="ttl.sh/${UUID}keycloak:${VERSION}" \
-DskipTests
# JIB patching on images doesn't work reliably with ttl.sh
docker push "ttl.sh/${UUID}keycloak-operator:${VERSION}"
)
$SCRIPT_DIR/prepare-olm-test.sh ttl.sh ${VERSION} NONE ${UUID}
$SCRIPT_DIR/install-keycloak-operator.sh

View File

@@ -1,34 +0,0 @@
#! /bin/bash
set -euxo pipefail
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
DOCKER_REGISTRY="$1"
VERSION="$2"
PREV_VERSION="$3"
UUID=${4:-""}
OPERATOR_IMAGE_NAME="keycloak-operator"
OPERATOR_DOCKER_IMAGE="$DOCKER_REGISTRY/${UUID}$OPERATOR_IMAGE_NAME"
# Create OLM bundle
$SCRIPT_DIR/create-olm-bundle.sh $VERSION $PREV_VERSION $OPERATOR_DOCKER_IMAGE
(cd $SCRIPT_DIR/../olm/$VERSION && \
docker build -t $DOCKER_REGISTRY/${UUID}keycloak-operator-bundle:$VERSION -f bundle.Dockerfile . && \
docker push $DOCKER_REGISTRY/${UUID}keycloak-operator-bundle:$VERSION)
# Verify the bundle
opm alpha bundle validate --tag $DOCKER_REGISTRY/${UUID}keycloak-operator-bundle:$VERSION --image-builder docker
# Create the test-catalog
$SCRIPT_DIR/create-olm-test-catalog.sh $VERSION $DOCKER_REGISTRY/${UUID}keycloak-operator-bundle
(cd $SCRIPT_DIR/../olm/catalog && \
docker build -f test-catalog.Dockerfile -t $DOCKER_REGISTRY/${UUID}keycloak-test-catalog:$VERSION . && \
docker push $DOCKER_REGISTRY/${UUID}keycloak-test-catalog:$VERSION)
# Create testing resources
$SCRIPT_DIR/create-olm-test-resources.sh $VERSION $DOCKER_REGISTRY ${UUID}