mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-06 06:49:53 -06:00
Refactor dist config to a common module
This commit is contained in:
@@ -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
|
||||
@@ -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}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
)
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
Reference in New Issue
Block a user