chore: Refactoring build/test catalog scripts (#1172)
* chore: Refactoring build/test catalog scripts Signed-off-by: Anatolii Bazko <abazko@redhat.com>pull/1180/head
parent
b4930b5054
commit
985fc2f129
|
|
@ -26,7 +26,7 @@ overrideDefaults() {
|
|||
}
|
||||
|
||||
runTests() {
|
||||
"${OPERATOR_REPO}"/olm/testUpdate.sh "openshift" "stable" ${NAMESPACE}
|
||||
"${OPERATOR_REPO}"/olm/testUpdate.sh -p openshift -c stable -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:test -n ${NAMESPACE}
|
||||
waitEclipseCheDeployed ${LAST_PACKAGE_VERSION}
|
||||
provisionOAuth
|
||||
startNewWorkspace
|
||||
|
|
|
|||
|
|
@ -202,10 +202,14 @@ collectDevworkspaceOperatorLogs() {
|
|||
|
||||
# Build latest operator image
|
||||
buildCheOperatorImage() {
|
||||
#docker build -t "${OPERATOR_IMAGE}" -f Dockerfile .
|
||||
docker build -t "${OPERATOR_IMAGE}" -f Dockerfile . && docker save "${OPERATOR_IMAGE}" > /tmp/operator.tar
|
||||
}
|
||||
|
||||
buildAndPushCheOperatorImage() {
|
||||
docker build -t "${OPERATOR_IMAGE}" -f Dockerfile . && docker push "${OPERATOR_IMAGE}"
|
||||
}
|
||||
|
||||
|
||||
copyCheOperatorImageToMinikube() {
|
||||
#docker save "${OPERATOR_IMAGE}" | minikube ssh --native-ssh=false -- docker load
|
||||
eval $(minikube docker-env) && docker load -i /tmp/operator.tar && rm /tmp/operator.tar
|
||||
|
|
@ -408,11 +412,6 @@ enableImagePuller() {
|
|||
kubectl patch checluster/eclipse-che -n ${NAMESPACE} --type=merge -p '{"spec":{"imagePuller":{"enable": true}}}'
|
||||
}
|
||||
|
||||
insecurePrivateDockerRegistry() {
|
||||
IMAGE_REGISTRY_HOST="127.0.0.1:5000"
|
||||
export IMAGE_REGISTRY_HOST
|
||||
}
|
||||
|
||||
# Utility to print objects created by Openshift CI automatically
|
||||
printOlmCheObjects() {
|
||||
echo -e "[INFO] Operator Group object created in namespace: ${NAMESPACE}"
|
||||
|
|
|
|||
|
|
@ -27,13 +27,24 @@ source "${OPERATOR_REPO}/olm/olm.sh"
|
|||
trap "catchFinish" EXIT SIGINT
|
||||
|
||||
runTest() {
|
||||
local channel=next
|
||||
local channel
|
||||
local catalogImage
|
||||
|
||||
if [[ $GITHUB_HEAD_REF =~ release$ ]]; then
|
||||
channel=stable
|
||||
catalogImage=quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:test
|
||||
else
|
||||
# build operator image and push to a local docker registry
|
||||
export OPERATOR_IMAGE="127.0.0.1:5000/test/operator:test"
|
||||
buildAndPushCheOperatorImage
|
||||
|
||||
# build catalog source
|
||||
channel=next
|
||||
catalogImage=127.0.0.1:5000/test/catalog:test
|
||||
"${OPERATOR_REPO}"/olm/buildCatalog.sh -p kubernetes -c next -i ${catalogImage} -o ${OPERATOR_IMAGE}
|
||||
fi
|
||||
|
||||
export OPERATOR_IMAGE="${IMAGE_REGISTRY_HOST}/operator:test"
|
||||
source "${OPERATOR_REPO}"/olm/testCatalogSource.sh "kubernetes" ${channel} "${NAMESPACE}"
|
||||
source "${OPERATOR_REPO}"/olm/testCatalog.sh -p kubernetes -c ${channel} -n ${NAMESPACE} -i ${catalogImage}
|
||||
startNewWorkspace
|
||||
waitWorkspaceStart
|
||||
|
||||
|
|
@ -54,6 +65,4 @@ runTest() {
|
|||
}
|
||||
|
||||
initDefaults
|
||||
installOperatorMarketPlace
|
||||
insecurePrivateDockerRegistry
|
||||
runTest
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ source "${OPERATOR_REPO}"/.github/bin/common.sh
|
|||
trap "catchFinish" EXIT SIGINT
|
||||
|
||||
runTest() {
|
||||
"${OPERATOR_REPO}"/olm/testUpdate.sh "kubernetes" "stable" ${NAMESPACE}
|
||||
"${OPERATOR_REPO}"/olm/testUpdate.sh -p kubernetes -c stable -i quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:test -n ${NAMESPACE}
|
||||
waitEclipseCheDeployed ${LAST_PACKAGE_VERSION}
|
||||
startNewWorkspace
|
||||
waitWorkspaceStart
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2019-2021 Red Hat, Inc.
|
||||
# This program and the accompanying materials are made
|
||||
# available under the terms of the Eclipse Public License 2.0
|
||||
# which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0
|
||||
#
|
||||
# Contributors:
|
||||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
if [ -n "${GITHUB_WORKSPACE}" ]; then
|
||||
ROOT_PROJECT_DIR="${GITHUB_WORKSPACE}"
|
||||
else
|
||||
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
|
||||
ROOT_PROJECT_DIR=$(dirname $(dirname "$(dirname "$SCRIPT")"))
|
||||
fi
|
||||
|
||||
if [ -z "${IMAGE_REGISTRY_HOST}" ] || [ -z "${IMAGE_REGISTRY_USER_NAME}" ]; then
|
||||
echo "[ERROR] Specify env variables with information about image registry 'IMAGE_REGISTRY_HOST' and 'IMAGE_REGISTRY_USER_NAME'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source "${BASE_DIR}/olm.sh"
|
||||
installOPM
|
||||
${OPM_BINARY} version
|
||||
|
||||
for platform in 'openshift' 'kubernetes'; do
|
||||
echo "Recovery OLM channels for ${platform}"
|
||||
|
||||
CATALOG_BUNDLE_IMAGE="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-${platform}-opm-bundles"
|
||||
echo "[INFO] Bundle image without tag: ${CATALOG_BUNDLE_IMAGE}"
|
||||
|
||||
declare -a BUNDLE_TAGS=($(skopeo list-tags docker://${CATALOG_BUNDLE_IMAGE} 2>/dev/null | jq -r ".Tags[] | @sh"))
|
||||
BUNDLE_IMAGES=""
|
||||
for tag in "${BUNDLE_TAGS[@]}"; do
|
||||
tag=$(echo "${tag}" | tr -d "'")
|
||||
BUNDLE_IMAGES="${BUNDLE_IMAGES},${CATALOG_BUNDLE_IMAGE}:${tag}"
|
||||
done
|
||||
# Remove first coma
|
||||
BUNDLE_IMAGES="${BUNDLE_IMAGES#,}"
|
||||
|
||||
echo "[INFO] List bundle images: ${BUNDLE_IMAGES}"
|
||||
# Rebuild and push index image with all found bundles.
|
||||
INDEX_IMG="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-${platform}-opm-catalog:preview"
|
||||
echo "[INFO] Rebuild and push catalog source image: "
|
||||
echo "[INFO] ====================================== "
|
||||
pushd "${ROOT_PROJECT_DIR}" || true
|
||||
make catalog-build BUNDLE_IMGS="${BUNDLE_IMAGES}" CATALOG_IMG="${INDEX_IMG}"
|
||||
make catalog-push CATALOG_IMG="${INDEX_IMG}"
|
||||
popd || true
|
||||
done
|
||||
|
|
@ -37,10 +37,18 @@ jobs:
|
|||
username: ${{ secrets.QUAY_USERNAME }}
|
||||
password: ${{ secrets.QUAY_PASSWORD }}
|
||||
- name: Build and push images to quay.io
|
||||
run: >
|
||||
${GITHUB_WORKSPACE}/olm/buildAndPushBundleImages.sh -c 'next' -p 'openshift' &&
|
||||
${GITHUB_WORKSPACE}/olm/buildAndPushBundleImages.sh -c 'next-all-namespaces' -p 'openshift' &&
|
||||
${GITHUB_WORKSPACE}/olm/buildAndPushBundleImages.sh -c 'next' -p 'kubernetes'
|
||||
env:
|
||||
IMAGE_REGISTRY_HOST: quay.io
|
||||
IMAGE_REGISTRY_USER_NAME: eclipse
|
||||
run: |
|
||||
${GITHUB_WORKSPACE}/olm/buildCatalog.sh \
|
||||
--channel 'next' \
|
||||
--platform 'openshift' \
|
||||
--catalog-image quay.io/eclipse/eclipse-che-openshift-opm-catalog:next
|
||||
|
||||
${GITHUB_WORKSPACE}/olm/buildCatalog.sh \
|
||||
--channel 'next' \
|
||||
--platform 'kubernetes' \
|
||||
--catalog-image quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:next
|
||||
|
||||
${GITHUB_WORKSPACE}/olm/buildCatalog.sh \
|
||||
--channel 'next-all-namespaces' \
|
||||
--platform 'openshift' \
|
||||
--catalog-image quay.io/eclipse/eclipse-che-openshift-opm-catalog:next
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ jobs:
|
|||
run: |
|
||||
minikube addons enable ingress
|
||||
|
||||
# Enable registry and portfward to push images to registry
|
||||
# Enable registry and port forward to push images to registry
|
||||
/bin/bash olm/minikube-registry-addon.sh &
|
||||
- name: Install chectl
|
||||
run: bash <(curl -sL https://www.eclipse.org/che/chectl/) --channel=next
|
||||
|
|
|
|||
|
|
@ -1,40 +0,0 @@
|
|||
#
|
||||
# Copyright (c) 2019-2021 Red Hat, Inc.
|
||||
# This program and the accompanying materials are made
|
||||
# available under the terms of the Eclipse Public License 2.0
|
||||
# which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0
|
||||
#
|
||||
# Contributors:
|
||||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
name: Recovery OLM channels in the index images
|
||||
on:
|
||||
# manual trigger if required
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
reason:
|
||||
description: 'Reason to trigger index images recovery'
|
||||
required: false
|
||||
jobs:
|
||||
build-images:
|
||||
name: Build
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Install yq
|
||||
run: sudo pip install yq
|
||||
- name: Docker login
|
||||
uses: azure/docker-login@v1
|
||||
with:
|
||||
login-server: quay.io
|
||||
username: ${{ secrets.QUAY_USERNAME }}
|
||||
password: ${{ secrets.QUAY_PASSWORD }}
|
||||
- name: Build and push images to quay.io
|
||||
run: >
|
||||
${GITHUB_WORKSPACE}/.github/bin/recovery-olm-channels.sh
|
||||
env:
|
||||
IMAGE_REGISTRY_HOST: quay.io
|
||||
IMAGE_REGISTRY_USER_NAME: eclipse
|
||||
|
|
@ -27,50 +27,69 @@
|
|||
{
|
||||
"type": "bashdb",
|
||||
"request": "launch",
|
||||
"name": "Bash-Debug (testCatalogSource.sh) minikube stable",
|
||||
"name": "Bash-Debug (testCatalog.sh) minikube stable",
|
||||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "${workspaceFolder}/olm/testCatalogSource.sh",
|
||||
"program": "${workspaceFolder}/olm/testCatalog.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"kubernetes",
|
||||
"-c",
|
||||
"stable",
|
||||
"che",
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:test",
|
||||
"-n",
|
||||
"eclipse-che",
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "bashdb",
|
||||
"request": "launch",
|
||||
"name": "Bash-Debug (testCatalogSource.sh) minikube next",
|
||||
"name": "Bash-Debug (testCatalog.sh) minikube next",
|
||||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "${workspaceFolder}/olm/testCatalogSource.sh",
|
||||
"program": "${workspaceFolder}/olm/testCatalog.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"kubernetes",
|
||||
"-c",
|
||||
"next",
|
||||
"che",
|
||||
"my_catalog"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:next",
|
||||
"-n",
|
||||
"eclipse-che",
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "bashdb",
|
||||
"request": "launch",
|
||||
"name": "Bash-Debug (testCatalogSource.sh) openshift next",
|
||||
"name": "Bash-Debug (testCatalog.sh) openshift next",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"program": "${workspaceFolder}/olm/testCatalogSource.sh",
|
||||
"program": "${workspaceFolder}/olm/testCatalog.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"openshift",
|
||||
"-c",
|
||||
"next",
|
||||
"che"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-openshift-opm-catalog:next",
|
||||
"-n",
|
||||
"eclipse-che",
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "bashdb",
|
||||
"request": "launch",
|
||||
"name": "Bash-Debug (testCatalogSource.sh) openshift stable",
|
||||
"name": "Bash-Debug (testCatalog.sh) openshift stable",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"program": "${workspaceFolder}/olm/testCatalogSource.sh",
|
||||
"program": "${workspaceFolder}/olm/testCatalog.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"openshift",
|
||||
"-c",
|
||||
"stable",
|
||||
"che"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-openshift-opm-catalog:test",
|
||||
"-n",
|
||||
"eclipse-che",
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -80,9 +99,14 @@
|
|||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "${workspaceFolder}/olm/testUpdate.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"kubernetes",
|
||||
"-c",
|
||||
"stable",
|
||||
"che"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:test",
|
||||
"-n",
|
||||
"eclipse-che"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -92,9 +116,14 @@
|
|||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "${workspaceFolder}/olm/testUpdate.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"kubernetes",
|
||||
"-c",
|
||||
"next",
|
||||
"che"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:next",
|
||||
"-n",
|
||||
"eclipse-che"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -104,9 +133,14 @@
|
|||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "${workspaceFolder}/olm/testUpdate.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"openshift",
|
||||
"-c",
|
||||
"stable",
|
||||
"che"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-openshift-opm-catalog:test",
|
||||
"-n",
|
||||
"eclipse-che"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -116,35 +150,44 @@
|
|||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "${workspaceFolder}/olm/testUpdate.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"openshift",
|
||||
"-c",
|
||||
"next",
|
||||
"che"
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-openshift-opm-catalog:next",
|
||||
"-n",
|
||||
"eclipse-che"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "bashdb",
|
||||
"request": "launch",
|
||||
"name": "Bash-Debug (buildAndPushBundleImages.sh) Kubernetes platfrom",
|
||||
"name": "Bash-Debug (buildCatalog.sh) Kubernetes platfrom",
|
||||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "./buildAndPushBundleImages.sh",
|
||||
"program": "./buildCatalog.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"kubernetes",
|
||||
"-c",
|
||||
"next"
|
||||
"next",
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:next"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "bashdb",
|
||||
"request": "launch",
|
||||
"name": "Bash-Debug (buildAndPushBundleImages.sh) Openshift platform",
|
||||
"name": "Bash-Debug (buildCatalog.sh) Openshift platform",
|
||||
"cwd": "${workspaceFolder}/olm",
|
||||
"program": "./buildAndPushBundleImages.sh",
|
||||
"program": "./buildCatalog.sh",
|
||||
"args": [
|
||||
"-p",
|
||||
"openshift",
|
||||
"-c",
|
||||
"next"
|
||||
"next",
|
||||
"-i",
|
||||
"quay.io/eclipse/eclipse-che-openshift-opm-catalog:next"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -112,7 +112,7 @@ $ make update-resources -s
|
|||
3. Build catalog source and bundle images:
|
||||
|
||||
```bash
|
||||
$ olm/buildAndPushBundleImages.sh -p <openshift|kubernetes> -c "next"
|
||||
$ olm/buildCatalog.sh -p <PLATFORM> -c <CHANNEL> -i <CATALOG_IMAGE>
|
||||
```
|
||||
|
||||
4. Create a custom catalog source yaml (update strategy is workaround for https://github.com/operator-framework/operator-lifecycle-manager/issues/903):
|
||||
|
|
@ -121,10 +121,10 @@ $ olm/buildAndPushBundleImages.sh -p <openshift|kubernetes> -c "next"
|
|||
apiVersion: operators.coreos.com/v1alpha1
|
||||
kind: CatalogSource
|
||||
metadata:
|
||||
name: eclipse-che-preview-custom
|
||||
namespace: che-namespace
|
||||
name: eclipse-che-custom-catalog
|
||||
namespace: eclipse-che
|
||||
spec:
|
||||
image: <IMAGE_REGISTRY_HOST>/<IMAGE_REGISTRY_USER_NAME>/eclipse-che-<openshift|kubernetes>-opm-catalog:preview
|
||||
image: <CATALOG_IMAGE>
|
||||
sourceType: grpc
|
||||
updateStrategy:
|
||||
registryPoll:
|
||||
|
|
@ -135,7 +135,7 @@ spec:
|
|||
|
||||
|
||||
```bash
|
||||
$ chectl server:deploy --installer=olm --platform=<CHECTL_SUPPORTED_PLATFORM> --catalog-source-yaml <PATH_TO_CUSTOM_CATALOG_SOURCE_YAML> --olm-channel=next --package-manifest-name=eclipse-che-preview-<openshift|kubernetes>
|
||||
$ chectl server:deploy --installer=olm --platform=<PLATFORM> --catalog-source-yaml <PATH_TO_CUSTOM_CATALOG_SOURCE_YAML> --olm-channel=next --package-manifest-name=eclipse-che-preview-<openshift|kubernetes>
|
||||
```
|
||||
|
||||
### Deploy stable Che operator in Cluster Wide Availability
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ To be able to test update it is needed to created some user before. Login as `ku
|
|||
|
||||
```bash
|
||||
cd olm
|
||||
./testUpdate.sh openshift stable
|
||||
./testUpdate.sh -p openshift -c stable -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:test -n eclipse-che
|
||||
```
|
||||
|
||||
Open Eclipse Che dashboard in an anonymous tab:
|
||||
|
|
@ -54,7 +54,7 @@ Run script to test updates:
|
|||
|
||||
```bash
|
||||
cd olm
|
||||
./testUpdate.sh kubernetes stable
|
||||
./testUpdate.sh -p kubernetes -c stable -i quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:test -n eclipse-che
|
||||
```
|
||||
|
||||
Open Eclipse Che dashboard:
|
||||
|
|
|
|||
|
|
@ -248,9 +248,10 @@ pushOlmBundlesToQuayIo() {
|
|||
echo "[INFO] releaseOperatorCode :: Login to quay.io..."
|
||||
docker login quay.io -u "${QUAY_ECLIPSE_CHE_USERNAME}" -p "${QUAY_ECLIPSE_CHE_PASSWORD}"
|
||||
echo "[INFO] Push OLM bundles to quay.io"
|
||||
. ${RELEASE_DIR}/olm/buildAndPushBundleImages.sh -c "tech-preview-stable-all-namespaces" -p "openshift" -f "true"
|
||||
. ${RELEASE_DIR}/olm/buildAndPushBundleImages.sh -c "stable" -p "kubernetes" -f "true"
|
||||
. ${RELEASE_DIR}/olm/buildAndPushBundleImages.sh -c "stable" -p "openshift" -f "true"
|
||||
|
||||
. ${RELEASE_DIR}/olm/buildCatalog.sh -c tech-preview-stable-all-namespaces -p openshift -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:test -f
|
||||
. ${RELEASE_DIR}/olm/buildCatalog.sh -c stable -p kubernetes -i quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:test -f
|
||||
. ${RELEASE_DIR}/olm/buildCatalog.sh -c stable -p openshift -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:test -f
|
||||
}
|
||||
|
||||
pushGitChanges() {
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ Each bundle consists of a cluster service version file (CSV) and a custom resour
|
|||
To test next Che operator you have to use the OLM CatalogSource(index) image.
|
||||
CatalogSource image stores in the internal database information about OLM bundles with different versions of the Eclipse Che. For next channel (dependent on platform) Eclipse Che provides two CatalogSource images:
|
||||
|
||||
- `quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:preview` for Kubernetes platform;
|
||||
- `quay.io/eclipse/eclipse-che-openshift-opm-catalog:preview` for Openshift platform;
|
||||
- `quay.io/eclipse/eclipse-che-kubernetes-opm-catalog:next` for Kubernetes platform;
|
||||
- `quay.io/eclipse/eclipse-che-openshift-opm-catalog:next` for Openshift platform;
|
||||
|
||||
For each new next version Eclipse Che provides next bundle image with name pattern:
|
||||
|
||||
|
|
@ -42,25 +42,13 @@ quay.io/eclipse/eclipse-che-openshift-opm-bundles:7.19.0-5.next
|
|||
### Build custom next/stable OLM images
|
||||
|
||||
For test purpose you can build your own "next" or "stable" CatalogSource and bundle images
|
||||
with your latest development changes and use it in the test scripts. To build these images you can use script `olm/buildAndPushBundleImages.sh`:
|
||||
with your latest development changes and use it in the test scripts. To build these images you can use script `olm/buildCatalog.sh`:
|
||||
|
||||
```bash
|
||||
$ export IMAGE_REGISTRY_USER_NAME=<IMAGE_REGISTRY_USER_NAME> && \
|
||||
export IMAGE_REGISTRY_HOST=<IMAGE_REGISTRY_HOST> && \
|
||||
./buildAndPushBundleImages.sh -p <openshift|kubernetes> -c <next|stable> -i <FROM-INDEX-IMAGE>
|
||||
```
|
||||
|
||||
This script will build and push for you two images: CatalogSource(index) and bundle one:
|
||||
|
||||
* `${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-<openshift|kubernetes>-opm-bundles:<CHE_VERSION>-<INCREMENTAL_VERSION>.next`
|
||||
* `${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-<openshift|kubernetes>-opm-catalog:preview`
|
||||
|
||||
CatalogSource images are additive. It's mean that you can re-use bundles from another CatalogSource image and include them to your custom CatalogSource image. For this purpose you can specify the parameter `-i`:
|
||||
|
||||
```bash
|
||||
$ export IMAGE_REGISTRY_USER_NAME=<IMAGE_REGISTRY_USER_NAME> && \
|
||||
export IMAGE_REGISTRY_HOST=<IMAGE_REGISTRY_HOST> && \
|
||||
./buildAndPushBundleImages.sh -p <openshift|kubernetes> -n <next|stable> -i <FROM-INDEX-IMAGE>
|
||||
$ olm/buildCatalog.sh \
|
||||
-c (next|next-all-namespaces|stable|tech-preview-all-namespaces) \
|
||||
-p (openshift|kubernetes) \
|
||||
-i <CATALOG_IMAGE>
|
||||
```
|
||||
|
||||
### Testing custom CatalogSource and bundle images on the Openshift
|
||||
|
|
@ -68,21 +56,13 @@ $ export IMAGE_REGISTRY_USER_NAME=<IMAGE_REGISTRY_USER_NAME> && \
|
|||
To test the latest custom "next" bundle:
|
||||
|
||||
```bash
|
||||
$ ./testCatalogSource.sh "openshift" "next" <ECLIPSE_CHE_NAMESPACE>
|
||||
$ ./testCatalog.sh -p openshift -c next -i <CATALOG_IMAGE> -n eclipse-che
|
||||
```
|
||||
|
||||
If your CatalogSource image contains few bundles, you can test migration from previous bundle to the latest:
|
||||
|
||||
```bash
|
||||
$ export IMAGE_REGISTRY_USER_NAME=<IMAGE_REGISTRY_USER_NAME> && \
|
||||
export IMAGE_REGISTRY_HOST=<IMAGE_REGISTRY_HOST> && \
|
||||
./testUpdate.sh "openshift" "next" <ECLIPSE_CHE_NAMESPACE>
|
||||
```
|
||||
|
||||
Note, to test your own operator image, it must be defined in `OPERATOR_IMAGE` environment variable before running `testCatalogSource.sh` script, for example:
|
||||
|
||||
```bash
|
||||
export OPERATOR_IMAGE=registry/account/che-operator:tag
|
||||
$ ./testUpdate.sh -p openshift -c next -i <CATALOG_IMAGE> -n eclipse-che
|
||||
```
|
||||
|
||||
### Testing custom CatalogSource and bundle images on the Kubernetes
|
||||
|
|
@ -92,17 +72,13 @@ To test your custom CatalogSource and bundle images on the Kubernetes you need t
|
|||
To test the latest custom "next" bundle:
|
||||
|
||||
```bash
|
||||
$ export IMAGE_REGISTRY_USER_NAME=<IMAGE_REGISTRY_USER_NAME> && \
|
||||
export IMAGE_REGISTRY_HOST=<IMAGE_REGISTRY_HOST> && \
|
||||
./testCatalogSource.sh "kubernetes" "next" <ECLIPSE_CHE_NAMESPACE>
|
||||
$ ./testCatalog.sh -p kubernetes -c next -i <CATALOG_IMAGE> -n eclipse-che
|
||||
```
|
||||
|
||||
If your CatalogSource image contains few bundles, you can test migration from previous bundle to the latest:
|
||||
|
||||
```bash
|
||||
$ export IMAGE_REGISTRY_USER_NAME=<IMAGE_REGISTRY_USER_NAME> && \
|
||||
export IMAGE_REGISTRY_HOST=<IMAGE_REGISTRY_HOST> && \
|
||||
./testUpdate.sh "kubernetes" "next" <ECLIPSE_CHE_NAMESPACE>
|
||||
$ ./testUpdate.sh -p kubernetes -c next -i <CATALOG_IMAGE> -n eclipse-che
|
||||
```
|
||||
|
||||
Also you can test your changes without a public registry. You can use the minikube cluster and enable the minikube "registry" addon. For this purpose use the script:
|
||||
|
|
@ -121,9 +97,8 @@ $ curl -X GET localhost:5000/v2/_catalog
|
|||
With this private registry you can test Che operator from development bundle:
|
||||
|
||||
```bash
|
||||
$ export IMAGE_REGISTRY_HOST="127.0.0.1:5000" && \
|
||||
export IMAGE_REGISTRY_USER_NAME="" && \
|
||||
./testCatalogSource.sh "kubernetes" "next" <ECLIPSE_CHE_NAMESPACE>
|
||||
$ olm/buildCatalog.sh -p kubernetes -c next -i 127.0.0.1:5000/test/catalog:test
|
||||
$ olm/testCatalog.sh -p kubernetes -c next -i 127.0.0.1:5000/test/catalog:test -n eclipse-che
|
||||
```
|
||||
|
||||
> Tips: If minikube was installed locally (driver 'none', local installation minikube), then registry is available on the host 0.0.0.0 without port forwarding but it requires `sudo`.
|
||||
|
|
@ -143,7 +118,7 @@ metadata:
|
|||
name: eclipse-che-preview-custom
|
||||
namespace: <che-namespace>
|
||||
spec:
|
||||
image: quay.io/eclipse/eclipse-che-<openshift|kubernetes>-opm-catalog:preview
|
||||
image: quay.io/eclipse/eclipse-che-<openshift|kubernetes>-opm-catalog:test
|
||||
sourceType: grpc
|
||||
updateStrategy:
|
||||
registryPoll:
|
||||
|
|
|
|||
|
|
@ -1,108 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2019-2021 Red Hat, Inc.
|
||||
# This program and the accompanying materials are made
|
||||
# available under the terms of the Eclipse Public License 2.0
|
||||
# which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0
|
||||
#
|
||||
# Contributors:
|
||||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
set -ex
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 -p [platform] -c [channel] -i [from-index-image(optional)] -f [force-build-and-push(optional)]"
|
||||
echo "Example: $0 -p openshift -c next -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:preview -f true"
|
||||
}
|
||||
|
||||
if [[ $# -lt 1 ]]; then usage; exit; fi
|
||||
|
||||
unset channel platform forceBuildAndPush fromIndexImage
|
||||
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
'-c') channel="$2"; shift 1;;
|
||||
'-p') platform="$2"; shift 1;;
|
||||
'-f') forceBuildAndPush="$2"; shift 1;;
|
||||
'-i') fromIndexImage="$2"; shift 1;;
|
||||
'--help'|'-h') usage; exit;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
if [[ ! ${channel} ]] || [[ ! ${platform} ]]; then usage; exit 1; fi
|
||||
|
||||
if [ -z "${forceBuildAndPush}" ]; then
|
||||
forceBuildAndPush="false"
|
||||
fi
|
||||
if [ ! "${forceBuildAndPush}" == "true" ] && [ ! "${forceBuildAndPush}" == "false" ]; then
|
||||
echo "[ERROR] -f argument should be 'true' or 'false'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "${IMAGE_REGISTRY_HOST}" ] || [ -z "${IMAGE_REGISTRY_USER_NAME}" ]; then
|
||||
echo "[ERROR] Specify env variables with information about image registry 'IMAGE_REGISTRY_HOST' and 'IMAGE_REGISTRY_USER_NAME'."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "${GITHUB_WORKSPACE}" ]; then
|
||||
ROOT_PROJECT_DIR="${GITHUB_WORKSPACE}"
|
||||
else
|
||||
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
|
||||
ROOT_PROJECT_DIR=$(dirname "$(dirname "$SCRIPT")")
|
||||
fi
|
||||
|
||||
export BASE_DIR="${ROOT_PROJECT_DIR}/olm"
|
||||
|
||||
source "${BASE_DIR}/olm.sh"
|
||||
installOPM
|
||||
${OPM_BINARY} version
|
||||
|
||||
echo "[INFO] Platform: ${platform}"
|
||||
if [ -n "${OPM_BUNDLE_DIR}" ]; then
|
||||
bundleDir="${OPM_BUNDLE_DIR}"
|
||||
else
|
||||
bundleDir=$(getBundlePath "${platform}" "${channel}")
|
||||
fi
|
||||
OPM_BUNDLE_MANIFESTS_DIR="${bundleDir}/manifests"
|
||||
CSV="${OPM_BUNDLE_MANIFESTS_DIR}/che-operator.clusterserviceversion.yaml"
|
||||
|
||||
BUNDLE_TAG=$(yq -r ".spec.version" "${CSV}")
|
||||
echo "[INFO] Bundle version and tag: ${BUNDLE_TAG}"
|
||||
|
||||
CATALOG_BUNDLE_IMAGE="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-${platform}-opm-bundles:${BUNDLE_TAG}"
|
||||
CATALOG_TAG="preview"
|
||||
CATALOG_IMAGE="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-${platform}-opm-catalog:${CATALOG_TAG}"
|
||||
|
||||
# Validate and set up ${fromIndexImage} argument
|
||||
if [ -n "${fromIndexImage}" ]; then
|
||||
INDEX_CATALOG_EXISTS=$(skopeo inspect docker://${fromIndexImage} 2>/dev/null | jq -r ".RepoTags[]")
|
||||
if [ -z "${INDEX_CATALOG_EXISTS}" ]; then
|
||||
echo "[ERROR] 'from' index image ${fromIndexImage} is not avaliable in the image registry."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
CATALOG_EXISTS=$(skopeo inspect docker://${CATALOG_IMAGE} 2>/dev/null | jq -r ".RepoTags[]")
|
||||
if [ -n "${CATALOG_EXISTS}" ]; then
|
||||
echo "[INFO] Set up 'from' index image argument: ${CATALOG_IMAGE} to save previous bundles."
|
||||
fromIndexImage="${CATALOG_IMAGE}"
|
||||
fi
|
||||
fi
|
||||
|
||||
CHECK_BUNDLE_TAG=$(skopeo inspect docker://${CATALOG_BUNDLE_IMAGE} 2>/dev/null | jq -r ".RepoTags[]|select(. == \"${BUNDLE_TAG}\")")
|
||||
if [[ -z "$CHECK_BUNDLE_TAG" ]] || [[ "${forceBuildAndPush}" == "true" ]]; then
|
||||
buildBundleImage "${platform}" "${CATALOG_BUNDLE_IMAGE}" "${channel}" "docker"
|
||||
|
||||
if [ -n "${fromIndexImage}" ]; then
|
||||
buildCatalogImage "${CATALOG_IMAGE}" "${CATALOG_BUNDLE_IMAGE}" "docker" "${forceBuildAndPush}" "${fromIndexImage}"
|
||||
else
|
||||
buildCatalogImage "${CATALOG_IMAGE}" "${CATALOG_BUNDLE_IMAGE}" "docker" "${forceBuildAndPush}"
|
||||
fi
|
||||
else
|
||||
echo "[WARN] Bundle ${CATALOG_BUNDLE_IMAGE} is already pushed to the image registry. Rebuild bundle and catalog source images was skipped. Use '-f true' argument to force it."
|
||||
fi
|
||||
|
||||
echo "[INFO] Done."
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2019-2021 Red Hat, Inc.
|
||||
# This program and the accompanying materials are made
|
||||
# available under the terms of the Eclipse Public License 2.0
|
||||
# which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0
|
||||
#
|
||||
# Contributors:
|
||||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
export OPERATOR_REPO="${GITHUB_WORKSPACE}"
|
||||
|
||||
if [ -z "${OPERATOR_REPO}" ]; then
|
||||
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
|
||||
OPERATOR_REPO=$(dirname "$(dirname "$SCRIPT")")
|
||||
fi
|
||||
source "${OPERATOR_REPO}"/olm/olm.sh
|
||||
|
||||
init() {
|
||||
FORCE="false"
|
||||
unset CHANNEL
|
||||
unset PLATFORM
|
||||
unset CATALOG_IMAGE
|
||||
unset OPERATOR_IMAGE
|
||||
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
'--channel'|'-c') CHANNEL="$2"; shift 1;;
|
||||
'--platform'|'-p') PLATFORM="$2"; shift 1;;
|
||||
'--catalog-image'|'-i') CATALOG_IMAGE="$2"; shift 1;;
|
||||
'--operator-image'|'-o') OPERATOR_IMAGE="$2"; shift 1;;
|
||||
'--force'|'-f') FORCE="true";;
|
||||
'--help'|'-h') usage; exit;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
if [[ ! ${CHANNEL} ]] || [[ ! ${PLATFORM} ]] || [[ ! ${CATALOG_IMAGE} ]]; then usage; exit 1; fi
|
||||
|
||||
BUNDLE_DIR=$(getBundlePath "${PLATFORM}" "${CHANNEL}")
|
||||
OPM_BUNDLE_MANIFESTS_DIR="${BUNDLE_DIR}/manifests"
|
||||
CSV="${OPM_BUNDLE_MANIFESTS_DIR}/che-operator.clusterserviceversion.yaml"
|
||||
CSV_NAME=$(yq -r ".metadata.name" "${CSV}")
|
||||
CSV_VERSION=$(yq -r ".spec.version" "${CSV}")
|
||||
|
||||
IMAGE_REGISTRY_HOST=$(echo ${CATALOG_IMAGE} | cut -d '/' -f1)
|
||||
IMAGE_REGISTRY_USER_NAME=$(echo ${CATALOG_IMAGE} | cut -d '/' -f2)
|
||||
BUNDLE_IMAGE="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-${PLATFORM}-opm-bundles:${CSV_VERSION}"
|
||||
|
||||
echo "[INFO] CSV: ${CSV}"
|
||||
echo "[INFO] CSV name: ${CSV_NAME}"
|
||||
echo "[INFO] CSV version: ${CSV_VERSION}"
|
||||
echo "[INFO] Bundle image: ${BUNDLE_IMAGE}"
|
||||
|
||||
if [[ ! -z ${OPERATOR_IMAGE} ]]; then
|
||||
# set a given operator image into CSV before build
|
||||
sed -e "s|image:.*|image: ${OPERATOR_IMAGE}|" -i "${CSV}"
|
||||
fi
|
||||
}
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 -p (openshift|kubernetes) -c (next|next-all-namespaces|stable|tech-preview-all-namespaces) -i CATALOG_IMAGE [-f]"
|
||||
echo "Example: $0 -p openshift -c next -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:next -f"
|
||||
}
|
||||
|
||||
buildBundle() {
|
||||
if [[ $(isBundleImageExists) == 0 ]] || [[ "${FORCE}" == "true" ]]; then
|
||||
echo "[INFO] Build bundle image"
|
||||
buildBundleImage "${PLATFORM}" "${BUNDLE_IMAGE}" "${CHANNEL}" "docker"
|
||||
else
|
||||
echo "[INFO] Bundle image already exists. Use '--force' flag to force build."
|
||||
fi
|
||||
}
|
||||
|
||||
buildCatalog () {
|
||||
if [ $(isCatalogExists) == 0 ]; then
|
||||
echo "[INFO] Bundle a new catalog"
|
||||
buildCatalogImage "${CATALOG_IMAGE}" "${BUNDLE_IMAGE}" "docker" "${FORCE}"
|
||||
else
|
||||
if [[ $(isBundleExistsInCatalog) == 0 ]]; then
|
||||
echo "[INFO] Add a new bundle ${CSV_NAME} to the catalog"
|
||||
buildCatalogImage "${CATALOG_IMAGE}" "${BUNDLE_IMAGE}" "docker" "${FORCE}" "${CATALOG_IMAGE}"
|
||||
else
|
||||
echo "[INFO] Bundle ${CSV_NAME} already exists in the catalog"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
isBundleExistsInCatalog() {
|
||||
docker run -ti --entrypoint sh ${CATALOG_IMAGE} -c "apk add sqlite && sqlite3 /database/index.db 'SELECT head_operatorbundle_name FROM channel WHERE name = \"next\" and head_operatorbundle_name = \"${CSV_NAME}\"'" AND | tail -n1 | wc -l
|
||||
}
|
||||
|
||||
isBundleImageExists() {
|
||||
skopeo inspect docker://${BUNDLE_IMAGE} 2>/dev/null | jq -r ".RepoTags[]|select(. == \"${CSV_VERSION}\")" | wc -l
|
||||
}
|
||||
|
||||
isCatalogExists() {
|
||||
CATALOG_TAG=$(echo $CATALOG_IMAGE | rev | cut -d ':' -f1 | rev)
|
||||
skopeo inspect docker://${CATALOG_IMAGE} 2>/dev/null | jq -r ".RepoTags[]|select(. == \"${CATALOG_TAG}\")" | wc -l
|
||||
}
|
||||
|
||||
init $@
|
||||
installOPM
|
||||
buildBundle
|
||||
buildCatalog
|
||||
|
||||
echo "[INFO] Done"
|
||||
47
olm/olm.sh
47
olm/olm.sh
|
|
@ -248,6 +248,7 @@ installOPM() {
|
|||
chmod +x "${OPM_BINARY}"
|
||||
echo "[INFO] Downloading completed!"
|
||||
echo "[INFO] 'opm' binary path: ${OPM_BINARY}"
|
||||
${OPM_BINARY} version
|
||||
popd || exit
|
||||
fi
|
||||
}
|
||||
|
|
@ -403,35 +404,25 @@ installPackage() {
|
|||
fi
|
||||
}
|
||||
|
||||
applyCRCheCluster() {
|
||||
platform="${1}"
|
||||
if [ -z "${platform}" ]; then
|
||||
echo "[ERROR] Please specify first argument: 'platform'"
|
||||
exit 1
|
||||
fi
|
||||
namespace="${2}"
|
||||
if [ -z "${namespace}" ]; then
|
||||
echo "[ERROR] Please specify second argument: 'namespace'"
|
||||
exit 1
|
||||
fi
|
||||
CSV_FILE="${3}"
|
||||
if [ -z "${CSV_FILE}" ]; then
|
||||
echo "[ERROR] Please specify third argument: 'CSV_FILE'"
|
||||
exit 1
|
||||
applyCheClusterCR() {
|
||||
CSV_NAME=${1}
|
||||
PLATFORM=${2}
|
||||
|
||||
CHECLUSTER=$(kubectl get csv ${CSV_NAME} -n ${NAMESPACE} -o yaml \
|
||||
| yq -r ".metadata.annotations[\"alm-examples\"] | fromjson | .[] | select(.kind == \"CheCluster\")" \
|
||||
| yq -r ".spec.devWorkspace.enable = ${DEV_WORKSPACE_ENABLE:-false}" \
|
||||
| yq -r ".spec.server.serverExposureStrategy = \"${CHE_EXPOSURE_STRATEGY:-multi-host}\"" \
|
||||
| yq -r ".spec.imagePuller.enable = ${IMAGE_PULLER_ENABLE:-false}")
|
||||
|
||||
echo "${CHECLUSTER}"
|
||||
if [[ ${PLATFORM} == "kubernetes" ]]; then
|
||||
CHECLUSTER=$(echo "${CHECLUSTER}" | yq -r ".spec.k8s.ingressDomain = \"$(minikube ip).nip.io\"")
|
||||
fi
|
||||
|
||||
echo "[INFO] Creating Custom Resource"
|
||||
echo "[INFO] Creating Custom Resource: "
|
||||
echo "${CHECLUSTER}"
|
||||
|
||||
CR=$(yq -r ".metadata.annotations[\"alm-examples\"] | fromjson | .[] | select(.kind == \"CheCluster\")" "${CSV_FILE}")
|
||||
CR=$(echo "$CR" | yq -r ".spec.devWorkspace.enable = ${DEV_WORKSPACE_ENABLE:-false}")
|
||||
CR=$(echo "$CR" | yq -r ".spec.server.serverExposureStrategy = \"${CHE_EXPOSURE_STRATEGY:-multi-host}\"")
|
||||
CR=$(echo "$CR" | yq -r ".spec.server.imagePuller.enable = ${IMAGE_PULLER_ENABLE:-false}")
|
||||
if [ "${platform}" == "kubernetes" ]
|
||||
then
|
||||
CR=$(echo "$CR" | yq -r ".spec.k8s.ingressDomain = \"$(minikube ip).nip.io\"")
|
||||
fi
|
||||
|
||||
echo "$CR" | kubectl apply -n "${namespace}" --validate=false -f -
|
||||
echo "${CHECLUSTER}" | kubectl apply -n $NAMESPACE -f -
|
||||
}
|
||||
|
||||
waitCheServerDeploy() {
|
||||
|
|
@ -465,6 +456,8 @@ waitCheServerDeploy() {
|
|||
}
|
||||
|
||||
waitCatalogSourcePod() {
|
||||
sleep 10s
|
||||
|
||||
CURRENT_TIME=$(date +%s)
|
||||
ENDTIME=$(($CURRENT_TIME + 300))
|
||||
CATALOG_POD=$(kubectl get pods -n "${namespace}" -o yaml | yq -r ".items[] | select(.metadata.name | startswith(\"${packageName}\")) | .metadata.name")
|
||||
|
|
@ -508,8 +501,6 @@ getBundleListFromCatalogSource() {
|
|||
)
|
||||
|
||||
LIST_BUNDLES=$(echo "${LIST_BUNDLES}" | head -n -1)
|
||||
|
||||
echo "${LIST_BUNDLES}"
|
||||
}
|
||||
|
||||
getPreviousCSVInfo() {
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ getLatestsStableVersions
|
|||
|
||||
for platform in $(echo $PLATFORMS | tr "," " ")
|
||||
do
|
||||
INDEX_IMAGE="quay.io/eclipse/eclipse-che-${platform}-opm-catalog:preview"
|
||||
INDEX_IMAGE="quay.io/eclipse/eclipse-che-${platform}-opm-catalog:test"
|
||||
packageName="eclipse-che-preview-${platform}"
|
||||
echo
|
||||
echo "## Prepare the OperatorHub package to push to the 'community-operators' repository for platform '${platform}' from local package '${packageName}'"
|
||||
|
|
@ -97,7 +97,7 @@ do
|
|||
git remote remove upstream
|
||||
git remote add upstream https://github.com/redhat-openshift-ecosystem/community-operators-prod
|
||||
fi
|
||||
|
||||
|
||||
git fetch upstream ${base_branch}:upstream/${base_branch}
|
||||
|
||||
branch="update-eclipse-che"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2019-2021 Red Hat, Inc.
|
||||
# This program and the accompanying materials are made
|
||||
# available under the terms of the Eclipse Public License 2.0
|
||||
# which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0
|
||||
#
|
||||
# Contributors:
|
||||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
export OPERATOR_REPO="${GITHUB_WORKSPACE}"
|
||||
|
||||
if [ -z "${OPERATOR_REPO}" ]; then
|
||||
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
|
||||
OPERATOR_REPO=$(dirname "$(dirname "$SCRIPT")")
|
||||
fi
|
||||
source "${OPERATOR_REPO}/olm/olm.sh"
|
||||
|
||||
init() {
|
||||
unset CHANNEL
|
||||
unset PLATFORM
|
||||
unset CATALOG_IMAGE
|
||||
unset NAMESPACE
|
||||
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
'--channel'|'-c') CHANNEL="$2"; shift 1;;
|
||||
'--platform'|'-p') PLATFORM="$2"; shift 1;;
|
||||
'--namespace'|'-n') NAMESPACE="$2"; shift 1;;
|
||||
'--catalog-image'|'-i') CATALOG_IMAGE="$2"; shift 1;;
|
||||
'--help'|'-h') usage; exit;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
if [[ ! ${CHANNEL} ]] || [[ ! ${PLATFORM} ]] || [[ ! ${CATALOG_IMAGE} ]] || [[ ! ${NAMESPACE} ]]; then usage; exit 1; fi
|
||||
}
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 -p (openshift|kubernetes) -c (next|next-all-namespaces|stable) -i CATALOG_IMAGE -n NAMESPACE"
|
||||
echo "Example: $0 -p openshift -c next -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:next -n eclipse-che"
|
||||
}
|
||||
|
||||
run() {
|
||||
createNamespace ${NAMESPACE}
|
||||
installOperatorMarketPlace
|
||||
installCatalogSource "${PLATFORM}" "${NAMESPACE}" "${CATALOG_IMAGE}"
|
||||
|
||||
getBundleListFromCatalogSource "${PLATFORM}" "${NAMESPACE}"
|
||||
getLatestCSVInfo "${CHANNEL}"
|
||||
|
||||
forcePullingOlmImages "${NAMESPACE}" "${LATEST_CSV_BUNDLE_IMAGE}"
|
||||
|
||||
subscribeToInstallation "${PLATFORM}" "${NAMESPACE}" "${CHANNEL}" "${LATEST_CSV_NAME}"
|
||||
installPackage "${PLATFORM}" "${NAMESPACE}"
|
||||
|
||||
applyCheClusterCR ${LATEST_CSV_NAME} ${PLATFORM}
|
||||
waitCheServerDeploy "${NAMESPACE}"
|
||||
}
|
||||
|
||||
init $@
|
||||
installOPM
|
||||
run
|
||||
|
||||
echo "[INFO] Done"
|
||||
|
||||
|
|
@ -1,285 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Copyright (c) 2019-2021 Red Hat, Inc.
|
||||
# This program and the accompanying materials are made
|
||||
# available under the terms of the Eclipse Public License 2.0
|
||||
# which is available at https://www.eclipse.org/legal/epl-2.0/
|
||||
#
|
||||
# SPDX-License-Identifier: EPL-2.0
|
||||
#
|
||||
# Contributors:
|
||||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
# bash ansi colors
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
readlink -f "$0"
|
||||
|
||||
if [ -z "${OPERATOR_REPO}" ]; then
|
||||
SCRIPT=$(readlink -f "$0")
|
||||
|
||||
OPERATOR_REPO=$(dirname "$(dirname "$SCRIPT")");
|
||||
fi
|
||||
echo "Operator repo path is ${OPERATOR_REPO}"
|
||||
|
||||
OLM_DIR="${OPERATOR_REPO}/olm"
|
||||
export OPERATOR_REPO
|
||||
|
||||
# Function which will print all arguments need it to run this script
|
||||
printHelp() {
|
||||
echo ''
|
||||
echo 'Please consider to pass this values to the script to run catalog source tests in your cluster:'
|
||||
echo ' PLATFORM - Platform used to run olm files tests'
|
||||
echo ' CHANNEL - Channel used to tests olm files'
|
||||
echo ' NAMESPACE - Namespace where Eclipse Che will be deployed'
|
||||
echo ' CATALOG_SOURCE_IMAGE - Image name used to create a catalog source in cluster'
|
||||
echo ''
|
||||
echo 'EXAMPLE of running: ${OPERATOR_REPO}/olm/testCatalogSource.sh openshift next che my_image_name'
|
||||
}
|
||||
|
||||
# Check if a platform was defined...
|
||||
PLATFORM=$1
|
||||
if [ "${PLATFORM}" == "" ]; then
|
||||
echo -e "${RED}[ERROR]: Please specify a valid platform. The posible platforms are kubernetes or openshift.The script will exit with code 1.${NC}"
|
||||
printHelp
|
||||
exit 1
|
||||
else
|
||||
echo "[INFO]: Successfully validated platform. Starting olm tests in platform: ${PLATFORM}."
|
||||
fi
|
||||
|
||||
# Check if a channel was defined... The available channels are 'next' and 'stable'
|
||||
CHANNEL=$2
|
||||
if [ "${CHANNEL}" == "stable" ] || [ "${CHANNEL}" == "next" ]; then
|
||||
echo "[INFO]: Successfully validated operator channel. Starting olm tests in channel: ${CHANNEL}."
|
||||
else
|
||||
echo "[ERROR]: Please specify a valid channel. The posible 'channels' are stable and 'next'. The script will exit with code 1."
|
||||
printHelp
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if a namespace was defined...
|
||||
NAMESPACE=$3
|
||||
if [ "${NAMESPACE}" == "" ]; then
|
||||
echo "[ERROR]: No namespace was specified... The script wil exit with code 1."
|
||||
printHelp
|
||||
exit 1
|
||||
else
|
||||
echo "[INFO]: Successfully asigned namespace ${NAMESPACE} to tests olm files."
|
||||
fi
|
||||
|
||||
# Assign catalog source image
|
||||
CATALOG_SOURCE_IMAGE=$4
|
||||
|
||||
IMAGE_REGISTRY_USER_NAME=${IMAGE_REGISTRY_USER_NAME:-eclipse}
|
||||
echo "[INFO] Image 'IMAGE_REGISTRY_USER_NAME': ${IMAGE_REGISTRY_USER_NAME}"
|
||||
|
||||
init() {
|
||||
source "${OLM_DIR}/olm.sh"
|
||||
OPM_BUNDLE_DIR=$(getBundlePath "${PLATFORM}" "${CHANNEL}")
|
||||
|
||||
CSV_FILE="${OPM_BUNDLE_DIR}/manifests/che-operator.clusterserviceversion.yaml"
|
||||
CSV_NAME=$(yq -r ".metadata.name" "${CSV_FILE}")
|
||||
|
||||
installOPM
|
||||
}
|
||||
|
||||
buildOLMImages() {
|
||||
# Manage catalog source for every platform in part.
|
||||
# 1. Kubernetes:
|
||||
# a) Use Minikube cluster. Enable registry addon, build catalog source and olm bundle images, push them to embedded private registry.
|
||||
# b) Provide image registry env variables to push images to the real public registry(docker.io, quay.io etc).
|
||||
# 2. Openshift: build bundle image and push it using image stream. Launch deployment with custom grpc based catalog source image to install the latest bundle.
|
||||
if [[ "${PLATFORM}" == "kubernetes" ]]
|
||||
then
|
||||
echo "[INFO]: Kubernetes platform detected"
|
||||
|
||||
# Build operator image
|
||||
if [ -n "${OPERATOR_IMAGE}" ];then
|
||||
echo "[INFO]: Build operator image ${OPERATOR_IMAGE}..."
|
||||
pushd "${OPERATOR_REPO}" || true
|
||||
docker build --no-cache -t "${OPERATOR_IMAGE}" -f Dockerfile .
|
||||
docker push "${OPERATOR_IMAGE}"
|
||||
echo "${OPERATOR_IMAGE}"
|
||||
popd || true
|
||||
|
||||
# Use operator image in the latest CSV
|
||||
sed -i "s|image: quay.io/eclipse/che-operator:next|image: ${OPERATOR_IMAGE}|" "${CSV_FILE}"
|
||||
sed -i 's|imagePullPolicy: Always|imagePullPolicy: IfNotPresent|' "${CSV_FILE}"
|
||||
fi
|
||||
|
||||
CATALOG_BUNDLE_IMAGE="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/che_operator_bundle:0.0.1"
|
||||
CATALOG_SOURCE_IMAGE="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/testing_catalog:0.0.1"
|
||||
|
||||
echo "[INFO] Build bundle image... ${CATALOG_BUNDLE_IMAGE}"
|
||||
buildBundleImage "${PLATFORM}" "${CATALOG_BUNDLE_IMAGE}" "${CHANNEL}" "docker"
|
||||
|
||||
echo "[INFO] Build catalog image... ${CATALOG_BUNDLE_IMAGE}"
|
||||
buildCatalogImage "${CATALOG_SOURCE_IMAGE}" "${CATALOG_BUNDLE_IMAGE}" "docker" "false"
|
||||
|
||||
echo "[INFO]: Successfully created catalog source container image and enabled minikube ingress."
|
||||
elif [[ "${PLATFORM}" == "openshift" ]]
|
||||
then
|
||||
echo "[INFO]: Starting to build catalog image and push to ImageStream."
|
||||
|
||||
if [ -n "${OPERATOR_IMAGE}" ]; then
|
||||
# Use custom operator image, if set, in the latest CSV
|
||||
sed -i "s|image: quay.io/eclipse/che-operator:next|image: ${OPERATOR_IMAGE}|" "${CSV_FILE}"
|
||||
echo "[INFO]: Using custom operator image: ${OPERATOR_IMAGE}"
|
||||
fi
|
||||
|
||||
echo "============"
|
||||
echo "[INFO] Current user is $(oc whoami)"
|
||||
echo "============"
|
||||
|
||||
oc new-project "${NAMESPACE}" || true
|
||||
|
||||
pull_user="puller"
|
||||
pull_password="puller"
|
||||
add_user "${pull_user}" "${pull_password}"
|
||||
|
||||
if [ -z "${KUBECONFIG}" ]; then
|
||||
KUBECONFIG="${HOME}/.kube/config"
|
||||
fi
|
||||
TEMP_KUBE_CONFIG="/tmp/$pull_user.kubeconfig"
|
||||
rm -rf "${TEMP_KUBE_CONFIG}"
|
||||
cp "${KUBECONFIG}" "${TEMP_KUBE_CONFIG}"
|
||||
sleep 180
|
||||
|
||||
loginLogFile="/tmp/login-log"
|
||||
touch "${loginLogFile}"
|
||||
loginCMD="oc login --kubeconfig=${TEMP_KUBE_CONFIG} --username=${pull_user} --password=${pull_password} > ${loginLogFile}"
|
||||
timeout 900 bash -c "${loginCMD}" || echo "[ERROR] Login Fail"
|
||||
echo "[INFO] $(cat "${loginLogFile}" || true)"
|
||||
|
||||
echo "[INFO] Applying policy registry-viewer to user '${pull_user}'..."
|
||||
oc -n "$NAMESPACE" policy add-role-to-user registry-viewer "$pull_user"
|
||||
|
||||
echo "[INFO] Trying to retrieve user '${pull_user}' token..."
|
||||
token=$(oc --kubeconfig=${TEMP_KUBE_CONFIG} whoami -t)
|
||||
echo "[INFO] User '${pull_user}' token is: ${token}"
|
||||
|
||||
oc -n "${NAMESPACE}" new-build --binary --strategy=docker --name serverless-bundle
|
||||
|
||||
cp -rf "${OPM_BUNDLE_DIR}/bundle.Dockerfile" "${OPM_BUNDLE_DIR}/Dockerfile"
|
||||
if oc -n "${NAMESPACE}" start-build serverless-bundle --from-dir "${OPM_BUNDLE_DIR}"; then
|
||||
rm -rf "${OPM_BUNDLE_DIR}/Dockerfile"
|
||||
else
|
||||
rm -rf "${OPM_BUNDLE_DIR}/Dockerfile"
|
||||
echo "[ERROR ]Failed to build bundle image."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat <<EOF | oc apply -n "${NAMESPACE}" -f - || return $?
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: catalog-source-app
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: catalog-source-app
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: catalog-source-app
|
||||
spec:
|
||||
containers:
|
||||
- name: registry
|
||||
image: quay.io/openshift-knative/index
|
||||
ports:
|
||||
- containerPort: 50051
|
||||
name: grpc
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
exec:
|
||||
command:
|
||||
- grpc_health_probe
|
||||
- -addr=localhost:50051
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
- grpc_health_probe
|
||||
- -addr=localhost:50051
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |-
|
||||
podman login -u ${pull_user} -p ${token} image-registry.openshift-image-registry.svc:5000
|
||||
/bin/opm registry add --container-tool=podman -d index.db --mode=semver -b image-registry.openshift-image-registry.svc:5000/${NAMESPACE}/serverless-bundle && \
|
||||
/bin/opm registry serve -d index.db -p 50051
|
||||
EOF
|
||||
|
||||
# Wait for the index pod to be up to avoid inconsistencies with the catalog source.
|
||||
kubectl wait --for=condition=ready "pods" -l app=catalog-source-app --timeout=120s -n "${NAMESPACE}" || true
|
||||
indexIP="$(oc -n "${NAMESPACE}" get pods -l app=catalog-source-app -o jsonpath='{.items[0].status.podIP}')"
|
||||
|
||||
# Install the catalogsource.
|
||||
createRpcCatalogSource "${PLATFORM}" "${NAMESPACE}" "${indexIP}"
|
||||
else
|
||||
echo "[ERROR]: Error to start olm tests. Invalid Platform"
|
||||
printHelp
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
run() {
|
||||
createNamespace "${NAMESPACE}"
|
||||
if [ ! "${PLATFORM}" == "openshift" ]; then
|
||||
forcePullingOlmImages "${NAMESPACE}" "${CATALOG_BUNDLE_IMAGE}"
|
||||
fi
|
||||
|
||||
installOperatorMarketPlace
|
||||
if [ ! "${PLATFORM}" == "openshift" ]; then
|
||||
installCatalogSource "${PLATFORM}" "${NAMESPACE}" "${CATALOG_SOURCE_IMAGE}"
|
||||
fi
|
||||
subscribeToInstallation "${PLATFORM}" "${NAMESPACE}" "${CHANNEL}" "${CSV_NAME}"
|
||||
|
||||
installPackage "${PLATFORM}" "${NAMESPACE}"
|
||||
applyCRCheCluster "${PLATFORM}" "${NAMESPACE}" "${CSV_FILE}"
|
||||
waitCheServerDeploy "${NAMESPACE}"
|
||||
}
|
||||
|
||||
function add_user {
|
||||
name=$1
|
||||
pass=$2
|
||||
|
||||
echo "[INFO] Creating user $name:$pass"
|
||||
|
||||
PASSWD_TEMP_DIR="$(mktemp -q -d -t "passwd_XXXXXX" 2>/dev/null || mktemp -q -d)"
|
||||
HT_PASSWD_FILE="${PASSWD_TEMP_DIR}/users.htpasswd"
|
||||
touch "${HT_PASSWD_FILE}"
|
||||
|
||||
htpasswd -b "${HT_PASSWD_FILE}" "$name" "$pass"
|
||||
echo "====== HTPASSWD content is:========"
|
||||
cat "${HT_PASSWD_FILE}"
|
||||
echo "==================================="
|
||||
|
||||
if ! kubectl get secret htpass-secret -n openshift-config 2>/dev/null; then
|
||||
kubectl create secret generic htpass-secret \
|
||||
--from-file=htpasswd="${HT_PASSWD_FILE}" \
|
||||
-n openshift-config
|
||||
fi
|
||||
|
||||
cat <<EOF | oc apply -n "${NAMESPACE}" -f - || return $?
|
||||
apiVersion: config.openshift.io/v1
|
||||
kind: OAuth
|
||||
metadata:
|
||||
name: cluster
|
||||
spec:
|
||||
identityProviders:
|
||||
- name: my_htpasswd_provider
|
||||
mappingMethod: claim
|
||||
type: HTPasswd
|
||||
htpasswd:
|
||||
fileData:
|
||||
name: htpass-secret
|
||||
EOF
|
||||
}
|
||||
|
||||
init
|
||||
buildOLMImages
|
||||
run
|
||||
echo -e "\u001b[32m Done. \u001b[0m"
|
||||
|
|
@ -11,51 +11,48 @@
|
|||
# Red Hat, Inc. - initial API and implementation
|
||||
#
|
||||
|
||||
export OPERATOR_REPO="${GITHUB_WORKSPACE}"
|
||||
|
||||
if [ -z "${OPERATOR_REPO}" ]; then
|
||||
SCRIPT=$(readlink -f "$0")
|
||||
OPERATOR_REPO=$(dirname "$(dirname "$SCRIPT")");
|
||||
fi
|
||||
|
||||
source ${OPERATOR_REPO}/olm/check-yq.sh
|
||||
|
||||
platform=$1
|
||||
if [ "${platform}" == "" ]; then
|
||||
echo "Please specify platform ('openshift' or 'kubernetes') as the first argument."
|
||||
echo ""
|
||||
echo "testUpdate.sh <platform> [<channel>] [<namespace>]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
channel=$2
|
||||
if [ "${channel}" == "" ]; then
|
||||
channel="next"
|
||||
fi
|
||||
|
||||
namespace=$3
|
||||
if [ "${namespace}" == "" ]; then
|
||||
namespace="eclipse-che-preview-test"
|
||||
SCRIPT=$(readlink -f "${BASH_SOURCE[0]}")
|
||||
OPERATOR_REPO=$(dirname "$(dirname "$SCRIPT")")
|
||||
fi
|
||||
source "${OPERATOR_REPO}"/olm/olm.sh
|
||||
|
||||
init() {
|
||||
IMAGE_REGISTRY_HOST=${IMAGE_REGISTRY_HOST:-quay.io}
|
||||
IMAGE_REGISTRY_USER_NAME=${IMAGE_REGISTRY_USER_NAME:-eclipse}
|
||||
export CATALOG_IMAGENAME="${IMAGE_REGISTRY_HOST}/${IMAGE_REGISTRY_USER_NAME}/eclipse-che-${platform}-opm-catalog:preview"
|
||||
unset CHANNEL
|
||||
unset PLATFORM
|
||||
unset CATALOG_IMAGE
|
||||
unset OPERATOR_IMAGE
|
||||
unset NAMESPACE
|
||||
|
||||
source "${OPERATOR_REPO}/olm/olm.sh"
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
'--channel'|'-c') CHANNEL="$2"; shift 1;;
|
||||
'--platform'|'-p') PLATFORM="$2"; shift 1;;
|
||||
'--namespace'|'-n') NAMESPACE="$2"; shift 1;;
|
||||
'--catalog-image'|'-i') CATALOG_IMAGE="$2"; shift 1;;
|
||||
'--help'|'-h') usage; exit;;
|
||||
esac
|
||||
shift 1
|
||||
done
|
||||
|
||||
OPM_BUNDLE_DIR=$(getBundlePath "${platform}" "${channel}")
|
||||
CSV_FILE_PATH="${OPM_BUNDLE_DIR}/manifests/che-operator.clusterserviceversion.yaml"
|
||||
if [[ ! ${CHANNEL} ]] || [[ ! ${PLATFORM} ]] || [[ ! ${CATALOG_IMAGE} ]] || [[ ! ${NAMESPACE} ]]; then usage; exit 1; fi
|
||||
}
|
||||
|
||||
usage () {
|
||||
echo "Usage: $0 -p (openshift|kubernetes) -c (next|next-all-namespaces|stable) -i CATALOG_IMAGE -n NAMESPACE"
|
||||
echo "Example: $0 -p openshift -c next -i quay.io/eclipse/eclipse-che-openshift-opm-catalog:test -n eclipse-che"
|
||||
}
|
||||
|
||||
run() {
|
||||
createNamespace "${namespace}"
|
||||
|
||||
createNamespace "${NAMESPACE}"
|
||||
installOperatorMarketPlace
|
||||
installCatalogSource "${platform}" "${namespace}" "${CATALOG_IMAGENAME}"
|
||||
installCatalogSource "${PLATFORM}" "${NAMESPACE}" "${CATALOG_IMAGE}"
|
||||
|
||||
getBundleListFromCatalogSource "${platform}" "${namespace}"
|
||||
getPreviousCSVInfo "${channel}"
|
||||
getLatestCSVInfo "${channel}"
|
||||
getBundleListFromCatalogSource "${PLATFORM}" "${NAMESPACE}"
|
||||
getPreviousCSVInfo "${CHANNEL}"
|
||||
getLatestCSVInfo "${CHANNEL}"
|
||||
|
||||
echo "[INFO] Test update from version: ${PREVIOUS_CSV_BUNDLE_IMAGE} to: ${LATEST_CSV_BUNDLE_IMAGE}"
|
||||
|
||||
|
|
@ -64,19 +61,19 @@ run() {
|
|||
exit 1
|
||||
fi
|
||||
|
||||
forcePullingOlmImages "${namespace}" "${PREVIOUS_CSV_BUNDLE_IMAGE}"
|
||||
forcePullingOlmImages "${namespace}" "${LATEST_CSV_BUNDLE_IMAGE}"
|
||||
forcePullingOlmImages "${NAMESPACE}" "${PREVIOUS_CSV_BUNDLE_IMAGE}"
|
||||
forcePullingOlmImages "${NAMESPACE}" "${LATEST_CSV_BUNDLE_IMAGE}"
|
||||
|
||||
subscribeToInstallation "${platform}" "${namespace}" "${channel}" "${PREVIOUS_CSV_NAME}"
|
||||
installPackage "${platform}" "${namespace}"
|
||||
echo -e "\u001b[32m Installation of the previous che-operator version: ${PREVIOUS_CSV_NAME} successfully completed \u001b[0m"
|
||||
applyCRCheCluster "${platform}" "${namespace}" "${CSV_FILE_PATH}"
|
||||
waitCheServerDeploy "${namespace}"
|
||||
subscribeToInstallation "${PLATFORM}" "${NAMESPACE}" "${CHANNEL}" "${PREVIOUS_CSV_NAME}"
|
||||
installPackage "${PLATFORM}" "${NAMESPACE}"
|
||||
echo "[INFO] Installation of the previous che-operator version: ${PREVIOUS_CSV_NAME} successfully completed"
|
||||
|
||||
installPackage "${platform}" "${namespace}"
|
||||
echo -e "\u001b[32m Installation of the latest che-operator version: ${LATEST_CSV_NAME} successfully completed \u001b[0m"
|
||||
applyCheClusterCR ${PREVIOUS_CSV_NAME} ${PLATFORM}
|
||||
waitCheServerDeploy "${NAMESPACE}"
|
||||
|
||||
installPackage "${PLATFORM}" "${NAMESPACE}"
|
||||
echo "[INFO] Installation of the latest che-operator version: ${LATEST_CSV_NAME} successfully completed"
|
||||
}
|
||||
|
||||
init
|
||||
init "$@"
|
||||
run
|
||||
echo -e "\u001b[32m Done. \u001b[0m"
|
||||
|
|
|
|||
Loading…
Reference in New Issue