Last active
July 27, 2017 15:06
-
-
Save l0rd/812ca44b5cf128ff374704aa32d36118 to your computer and use it in GitHub Desktop.
Easily run Che on minishift `curl -fsSL http://bit.ly/2v0getche -o get-che.sh && sh get-che.sh`
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# ------ | |
# config | |
# ------ | |
export CHE_LOG_LEVEL="DEBUG" | |
export CHE_DEBUGGING_ENABLED="false" | |
export CHE_IMAGE_REPO="rhchestage/che-server" | |
export CHE_IMAGE_TAG="nightly-fabric8" | |
# ---------------- | |
# minishift config | |
# ---------------- | |
export OPENSHIFT_ENDPOINT="https://$(minishift ip):8443/" | |
export OPENSHIFT_USERNAME="developer" | |
export OPENSHIFT_PASSWORD="developer" | |
export CHE_OPENSHIFT_PROJECT="eclipse-che" | |
export OPENSHIFT_NAMESPACE_URL="${CHE_OPENSHIFT_PROJECT}.$(minishift ip).nip.io" | |
export OPENSHIFT_FLAVOR=minishift | |
echo "# oc login ${OPENSHIFT_ENDPOINT}..." | |
if [ -z ${OPENSHIFT_TOKEN+x} ]; then | |
oc login "${OPENSHIFT_ENDPOINT}" -u "${OPENSHIFT_USERNAME}" -p "${OPENSHIFT_PASSWORD}" > /dev/null | |
OPENSHIFT_TOKEN=$(oc whoami -t) | |
else | |
oc login "${OPENSHIFT_ENDPOINT}" --token="${OPENSHIFT_TOKEN}" > /dev/null | |
fi | |
# Check if the project exists othewise create it | |
echo "# oc get project ${CHE_OPENSHIFT_PROJECT}..." | |
if ! oc get project "${CHE_OPENSHIFT_PROJECT}" &> /dev/null; then | |
echo "# Creating project" | |
oc new-project "${CHE_OPENSHIFT_PROJECT}" | |
## TODO we should consider oc apply the latest http://central.maven.org/maven2/io/fabric8/online/packages/fabric8-online-che-quotas-oso/ | |
fi | |
oc project "${CHE_OPENSHIFT_PROJECT}" | |
# Set the right role binding to che service account | |
if [ "${OPENSHIFT_FLAVOR}" == "minishift" ]; then | |
oc login "${OPENSHIFT_ENDPOINT}" -u system:admin | |
echo "apiVersion: v1 | |
kind: RoleBinding | |
metadata: | |
name: che | |
roleRef: | |
name: admin | |
subjects: | |
- kind: ServiceAccount | |
name: che" | oc apply -f - | |
oc login "${OPENSHIFT_ENDPOINT}" --token="${OPENSHIFT_TOKEN}" > /dev/null | |
fi | |
export CHE_IMAGE="${CHE_IMAGE_REPO}:${CHE_IMAGE_TAG}" | |
# Escape slashes in CHE_IMAGE to use it with sed later | |
# e.g. docker.io/rhchestage => docker.io\/rhchestage | |
export CHE_IMAGE_SANITIZED=$(echo "${CHE_IMAGE}" | sed 's/\//\\\//g') | |
# Get latest deployment config version | |
#export OSIO_VERSION=$(curl -sSL http://central.maven.org/maven2/io/fabric8/online/apps/che/maven-metadata.xml | grep latest | sed -e 's,.*<latest>\([^<]*\)</latest>.*,\1,g') | |
export OSIO_VERSION=1.0.253 | |
# oc apply | |
# to delete all first `oc delete all --all -n ${CHE_OPENSHIFT_PROJECT}` | |
oc login ${OPENSHIFT_ENDPOINT} --token=${OPENSHIFT_TOKEN} | |
oc project ${CHE_OPENSHIFT_PROJECT} | |
if [ "${OPENSHIFT_FLAVOR}" == "minishift" ]; then | |
echo "# Deploying on minishift" | |
curl -sSL http://central.maven.org/maven2/io/fabric8/online/apps/che/${OSIO_VERSION}/che-${OSIO_VERSION}-openshift.yml | \ | |
if [ ! -z ${OPENSHIFT_NAMESPACE_URL+x} ]; then sed "s/ hostname-http:.*/ hostname-http: ${OPENSHIFT_NAMESPACE_URL}/" ; else cat -; fi | \ | |
sed "s/ image:.*/ image: \"${CHE_IMAGE_SANITIZED}\"/" | \ | |
sed "s/ workspaces-memory-limit: 2300Mi/ workspaces-memory-limit: 1300Mi/" | \ | |
sed "s/ workspaces-memory-request: 1500Mi/ workspaces-memory-request: 500Mi/" | \ | |
sed "s/ che-openshift-secure-routes: \"true\"/ che-openshift-secure-routes: \"false\"/" | \ | |
sed "s/ che-secure-external-urls: \"true\"/ che-secure-external-urls: \"false\"/" | \ | |
sed "s/ che.docker.server_evaluation_strategy.custom.external.protocol: https/ che.docker.server_evaluation_strategy.custom.external.protocol: http/" | \ | |
sed "s/ che-openshift-precreate-subpaths: \"false\"/ che-openshift-precreate-subpaths: \"true\"/" | \ | |
sed "s/ che.predefined.stacks.reload_on_start: \"true\"/ che.predefined.stacks.reload_on_start: \"false\"/" | \ | |
grep -v -e "tls:" -e "insecureEdgeTerminationPolicy: Redirect" -e "termination: edge" | \ | |
sed "s/ keycloak-disabled: \"false\"/ keycloak-disabled: \"true\"/" | \ | |
oc apply --force=true -f - | |
else | |
echo "# Deploying on osio" | |
curl -sSL http://central.maven.org/maven2/io/fabric8/online/apps/che/${OSIO_VERSION}/che-${OSIO_VERSION}-openshift.yml | \ | |
if [ ! -z ${OPENSHIFT_NAMESPACE_URL+x} ]; then sed "s/ hostname-http:.*/ hostname-http: ${OPENSHIFT_NAMESPACE_URL}/" ; else cat -; fi | \ | |
sed "s/ image:.*/ image: \"${CHE_IMAGE_SANITIZED}\"/" | \ | |
oc apply --force=true -f - | |
fi | |
che_url=$(oc get route che -o jsonpath='{.spec.host}') | |
echo "Che is available at ==> http://${che_url}" | |
# Check if an old che-debug service exists. | |
if oc get svc che-debug &> /dev/null; then | |
echo "# Deleting old che-debug service" | |
oc delete svc che-debug | |
fi | |
if [ "${CHE_DEBUGGING_ENABLED}" == "true" ]; then | |
echo "# Create debug route..." | |
oc expose dc che --name=che-debug --target-port=http-debug --port=8000 --type=NodePort | |
NodePort=$(oc get service che-debug -o jsonpath='{.spec.ports[0].nodePort}') | |
echo "And remote debugging is possible attaching to URL $(minishift ip):${NodePort}" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment