diff --git a/.dockerignore b/.dockerignore index 2f00d4c1b..7bb1c5159 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,5 @@ -node_modules +# Exclude files and directories whose names start with node_modules in any +# immediate subdirectory of the base project. see https://docs.docker.com/engine/reference/builder/#dockerignore-file +*/node_modules* *~ *.swp diff --git a/Dockerfile.builder b/Dockerfile.builder new file mode 100644 index 000000000..49f5b3a98 --- /dev/null +++ b/Dockerfile.builder @@ -0,0 +1,26 @@ +FROM centos:7 +ENV LANG=en_US.utf8 + +ENV NODE_VERSION 8.3.0 + +RUN yum -y update && \ + yum install -y bzip2 tar git \ + yum -y clean all + +ENV FABRIC8_USER_NAME=fabric8 + +RUN useradd --user-group --create-home --shell /bin/false ${FABRIC8_USER_NAME} + +ENV HOME=/home/${FABRIC8_USER_NAME} +ENV WORKSPACE=$HOME/fabric8-planner +RUN mkdir $WORKSPACE + +COPY . $WORKSPACE +RUN chown -R ${FABRIC8_USER_NAME}:${FABRIC8_USER_NAME} $HOME/* + +USER ${FABRIC8_USER_NAME} +WORKDIR $WORKSPACE/ + +VOLUME /dist + +# ENTRYPOINT ["/home/fabric8/fabric8-planner/docker-entrypoint.sh"] \ No newline at end of file diff --git a/Dockerfile.deploy.runtime b/Dockerfile.deploy.runtime new file mode 100644 index 000000000..a97bf1908 --- /dev/null +++ b/Dockerfile.deploy.runtime @@ -0,0 +1,12 @@ +FROM fabric8/fabric8-openshift-nginx:vd83b3a1 +MAINTAINER "Pete Muir " + +USER root + +RUN rm -rf /usr/share/nginx/html/ +COPY ./runtime/dist /usr/share/nginx/html +RUN chmod -R 777 /var/lib/nginx/ +RUN chmod -R 777 /usr/share/nginx/html/ + + +USER ${FABRIC8_USER_NAME} diff --git a/Jenkinsfile b/Jenkinsfile index be4cd5051..5808a85e9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,4 +1,4 @@ -@Library('github.com/fabric8io/fabric8-pipeline-library@master') +@Library('github.com/pranavgore09/fabric8-pipeline-library@standalone-planner') def utils = new io.fabric8.Utils() def flow = new io.fabric8.Fabric8Commands() def project = 'fabric8-ui/fabric8-planner' @@ -14,53 +14,97 @@ node{ fabric8UITemplate{ dockerNode{ ws { - timeout(time: 1, unit: 'HOURS') { + timeout(time: 20, unit: 'MINUTES') { checkout scm readTrusted 'deploy/release.groovy' def pipeline = load 'deploy/release.groovy' if (utils.isCI()){ - pipeline.ci() - + // build standalone planner + imageName = "fabric8/fabric8-planner:standalone" + // container('ui'){ + // tempVersion = pipeline.ciBuildPlannerProject(project) + // } container('ui'){ - tempVersion = pipeline.ciBuildDownstreamProject(project) - } + // stage('build planner npm'){ + // sh ''' + // npm cache clean --force + // export API_URL=https://api.prod-preview.openshift.io/api/ + // export FORGE_URL=https://forge.api.prod-preview.openshift.io/ + // export FABRIC8_REALM=fabric8-test + // export FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io/api/ + // export FABRIC8_SSO_API_URL=https://sso.prod-preview.openshift.io/ + // export FABRIC8_AUTH_API_URL=https://auth.prod-preview.openshift.io/api/ + // export PROXY_PASS_URL=https://api.free-int.openshift.com + // npm install + // npm run build + // ''' + // } - imageName = "fabric8/fabric8-ui:${tempVersion}" - container('docker'){ - pipeline.buildImage(imageName) - } + // stage('build runtime npm'){ + // dir('runtime'){ + // sh 'pwd' + // sh 'npm cache clean --force' + // sh 'npm install' + // // sh 'npm link ../dist/' + // sh ''' + // export API_URL=https://api.prod-preview.openshift.io/api/ + // export FORGE_URL=https://forge.api.prod-preview.openshift.io/ + // export FABRIC8_REALM=fabric8-test + // export FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io/api/ + // export FABRIC8_SSO_API_URL=https://sso.prod-preview.openshift.io/ + // export FABRIC8_AUTH_API_URL=https://auth.prod-preview.openshift.io/api/ + // export PROXY_PASS_URL=https://api.free-int.openshift.com + // npm run build + // ''' + // } + // } - ciDeploy = true + imageName = "fabric8/fabric8-planner:standalone" + // stage('build standalone snapshot image'){ + // container('docker'){ + // sh 'pwd' + // sh "docker build -t ${imageName} -f ./Dockerfile.deploy.runtime ." + // } + // } + // stage('push standalone snapshot image'){ + // container('docker'){ + // sh 'pwd' + // sh "docker push ${imageName}" + // } + // } + } + ciDeploy = true } else if (utils.isCD()){ sh "git checkout master" sh "git pull" sh "git remote set-url origin git@github.com:${project}.git" - container('ui'){ - pipeline.ci() - } + sh "skip following content, not needed as of now" + // container('ui'){ + // pipeline.ci() + // } - def branch - container('ui'){ - branch = utils.getBranch() - } + // def branch + // container('ui'){ + // branch = utils.getBranch() + // } - def published - container('ui'){ - published = pipeline.cd(branch) - } + // def published + // container('ui'){ + // published = pipeline.cd(branch) + // } - def releaseVersion - container('ui'){ - releaseVersion = utils.getLatestVersionFromTag() - } + // def releaseVersion + // container('ui'){ + // releaseVersion = utils.getLatestVersionFromTag() + // } - if (published){ - pipeline.updateDownstreamProjects(releaseVersion) - } + // if (published){ + // pipeline.updateDownstreamProjects(releaseVersion) + // } } } } @@ -72,30 +116,58 @@ if (ciDeploy){ def prj = 'fabric8-ui-'+ env.BRANCH_NAME prj = prj.toLowerCase() def route - deployOpenShiftNode(openshiftConfigSecretName: 'fabric8-intcluster-config'){ - stage("deploy ${prj}"){ - route = deployOpenShiftSnapshot{ - mavenRepo = 'http://central.maven.org/maven2/io/fabric8/online/apps/fabric8-ui' - githubRepo = 'fabric8-ui' - originalImageName = 'registry.devshift.net/fabric8-ui/fabric8-ui' - newImageName = imageName - openShiftProject = prj - githubProject = project - } - } - stage('notify'){ - def changeAuthor = env.CHANGE_AUTHOR - if (!changeAuthor){ - error "no commit author found so cannot comment on PR" - } - def pr = env.CHANGE_ID - if (!pr){ - error "no pull request number found so cannot comment on PR" - } - def message = "@${changeAuthor} ${imageName} is deployed and available for testing at https://${route}" - container('clients'){ - flow.addCommentToPullRequest(message, pr, project) - } - } + timeout(time: 20, unit: 'MINUTES') { + deployOpenShiftNode(openshiftConfigSecretName: 'fabric8-intcluster-config'){ + // stage("deploy ${prj}"){ + // route = deployOpenShiftSnapshot{ + // mavenRepo = 'http://central.maven.org/maven2/io/fabric8/online/apps/fabric8-ui' + // githubRepo = 'fabric8-ui' + // originalImageName = 'registry.devshift.net/fabric8-ui/fabric8-ui' + // newImageName = imageName + // openShiftProject = prj + // githubProject = project + // } + // } + // stage('notify'){ + // def changeAuthor = env.CHANGE_AUTHOR + // if (!changeAuthor){ + // error "no commit author found so cannot comment on PR" + // } + // def pr = env.CHANGE_ID + // if (!pr){ + // error "no pull request number found so cannot comment on PR" + // } + // def message = "@${changeAuthor} ${imageName} is deployed and available for testing at https://${route}" + // container('clients'){ + // flow.addCommentToPullRequest(message, pr, project) + // } + // } + prj = 'fabric8-planner-'+ env.BRANCH_NAME + prj = prj.toLowerCase() + stage("deploy ${prj}"){ + route = deployPlannerSnapshot{ + mavenRepo = 'https://raw.githubusercontent.com/pranavgore09/fabric8-pipeline-library/standalone-planner/planner-openshift.yml' + githubRepo = 'fabric8-planner' + originalImageName = 'fabric8/fabric8-planner@sha256:3ec108c095febe1fb5d54d27e595f38408736c2e0ab37bba26cf138f5674d861' + newImageName = imageName + openShiftProject = prj + githubProject = project + } + } + stage('notify'){ + def changeAuthor = env.CHANGE_AUTHOR + if (!changeAuthor){ + error "no commit author found so cannot comment on PR" + } + def pr = env.CHANGE_ID + if (!pr){ + error "no pull request number found so cannot comment on PR" + } + def message = "@${changeAuthor} ${imageName} is deployed and available for testing at https://${route}" + container('clients'){ + flow.addCommentToPullRequest(message, pr, project) + } + } + } } } diff --git a/Jenkinsfile.backup b/Jenkinsfile.backup new file mode 100644 index 000000000..be4cd5051 --- /dev/null +++ b/Jenkinsfile.backup @@ -0,0 +1,101 @@ +@Library('github.com/fabric8io/fabric8-pipeline-library@master') +def utils = new io.fabric8.Utils() +def flow = new io.fabric8.Fabric8Commands() +def project = 'fabric8-ui/fabric8-planner' +def ciDeploy = false +def tempVersion +def imageName +node{ + properties([ + disableConcurrentBuilds() + ]) +} + +fabric8UITemplate{ + dockerNode{ + ws { + timeout(time: 1, unit: 'HOURS') { + checkout scm + readTrusted 'deploy/release.groovy' + def pipeline = load 'deploy/release.groovy' + if (utils.isCI()){ + + pipeline.ci() + + container('ui'){ + tempVersion = pipeline.ciBuildDownstreamProject(project) + } + + imageName = "fabric8/fabric8-ui:${tempVersion}" + container('docker'){ + pipeline.buildImage(imageName) + } + + ciDeploy = true + + + } else if (utils.isCD()){ + sh "git checkout master" + sh "git pull" + sh "git remote set-url origin git@github.com:${project}.git" + + container('ui'){ + pipeline.ci() + } + + def branch + container('ui'){ + branch = utils.getBranch() + } + + def published + container('ui'){ + published = pipeline.cd(branch) + } + + def releaseVersion + container('ui'){ + releaseVersion = utils.getLatestVersionFromTag() + } + + if (published){ + pipeline.updateDownstreamProjects(releaseVersion) + } + } + } + } + } +} + +// deploy a snapshot fabric8-ui pod and notify pull request of details +if (ciDeploy){ + def prj = 'fabric8-ui-'+ env.BRANCH_NAME + prj = prj.toLowerCase() + def route + deployOpenShiftNode(openshiftConfigSecretName: 'fabric8-intcluster-config'){ + stage("deploy ${prj}"){ + route = deployOpenShiftSnapshot{ + mavenRepo = 'http://central.maven.org/maven2/io/fabric8/online/apps/fabric8-ui' + githubRepo = 'fabric8-ui' + originalImageName = 'registry.devshift.net/fabric8-ui/fabric8-ui' + newImageName = imageName + openShiftProject = prj + githubProject = project + } + } + stage('notify'){ + def changeAuthor = env.CHANGE_AUTHOR + if (!changeAuthor){ + error "no commit author found so cannot comment on PR" + } + def pr = env.CHANGE_ID + if (!pr){ + error "no pull request number found so cannot comment on PR" + } + def message = "@${changeAuthor} ${imageName} is deployed and available for testing at https://${route}" + container('clients'){ + flow.addCommentToPullRequest(message, pr, project) + } + } + } +} diff --git a/deploy/release.groovy b/deploy/release.groovy index cdcd7e92d..1c1f40656 100644 --- a/deploy/release.groovy +++ b/deploy/release.groovy @@ -34,6 +34,65 @@ def ciBuildDownstreamProject(project){ } } +def ciBuildPlannerProject(project){ + stage('build planner npm'){ + sh ''' + npm cache clean --force + export API_URL=https://api.prod-preview.openshift.io/api/ + export FORGE_URL=https://forge.api.prod-preview.openshift.io/ + export FABRIC8_REALM=fabric8-test + export FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io/api/ + export FABRIC8_SSO_API_URL=https://sso.prod-preview.openshift.io/ + export FABRIC8_AUTH_API_URL=https://auth.prod-preview.openshift.io/api/ + export PROXY_PASS_URL=https://api.free-int.openshift.com + npm install + env + npm run build + ''' + } + + stage('build runtime npm'){ + dir('runtime'){ + sh 'pwd' + sh 'npm cache clean --force' + sh 'npm install' + // sh 'npm link ../dist/' + sh 'env' + sh ''' + export API_URL=https://api.prod-preview.openshift.io/api/ + export FORGE_URL=https://forge.api.prod-preview.openshift.io/ + export FABRIC8_REALM=fabric8-test + export FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io/api/ + export FABRIC8_SSO_API_URL=https://sso.prod-preview.openshift.io/ + export FABRIC8_AUTH_API_URL=https://auth.prod-preview.openshift.io/api/ + export PROXY_PASS_URL=https://api.free-int.openshift.com + npm run build + ''' + } + } + + imageName = "fabric8/fabric8-planner:standalone" + stage('build standalone snapshot image'){ + container('docker'){ + sh 'pwd' + sh "docker build -t ${imageName} -f ./Dockerfile.deploy.runtime ." + } + } + + stage('push standalone snapshot image'){ + container('docker'){ + sh 'pwd' + sh "docker push ${imageName}" + } + } + + // stage('build standalone fabric8-planner npm run build:prod'){ + // return buildSnapshotStandalonePlanner{ + // pullRequestProject = project + // } + // } +} + def buildImage(imageName){ stage('build snapshot image'){ sh "cd fabric8-ui && docker build -t ${imageName} -f Dockerfile.deploy ." @@ -44,6 +103,18 @@ def buildImage(imageName){ } } +def buildStandalonePlannerImage(imageName){ + stage('build standalone snapshot image'){ + // dir('runtime'){ + sh "pwd && cd fabric8-planner && pwd && docker build -t ${imageName} -f ./Dockerfile.deploy.runtime ." + // } + } + + stage('push standalone snapshot image'){ + sh "docker push ${imageName}" + } +} + def cd (b){ stage('fix git repo'){ sh './scripts/fix-git-repo.sh' diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 000000000..403da1f59 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/bash + + +echo -n Updating Webdriver and Selenium... +webdriver-manager update +webdriver-manager update --versions.chrome 2.24 + +## FIXME: Firefox complains about a missing machine-id file. So I set a random one +echo 8636d9aff3933f48b95ad94891cd1839 > /var/lib/dbus/machine-id + +echo -n Running Xvfb... +/usr/bin/Xvfb :99 -screen 0 1024x768x24 diff --git a/openshift/config b/openshift/config new file mode 100644 index 000000000..f93bed122 --- /dev/null +++ b/openshift/config @@ -0,0 +1,17 @@ +FABRIC8_WIT_API_URL=https://api.prod-preview.openshift.io/api/ +FABRIC8_RECOMMENDER_API_URL=https://recommender.prod-preview.api.openshift.io +FABRIC8_FORGE_API_URL=https://forge.api.prod-preview.openshift.io +FABRIC8_SSO_API_URL=https://sso.prod-preview.openshift.io/ +FABRIC8_AUTH_API_URL=https://auth.prod-preview.openshift.io/api/ +OPENSHIFT_CONSOLE_URL=https://api.free-stg.openshift.com/console/ +WS_K8S_API_SERVER=api.free-stg.openshift.com:443 +PROXIED_K8S_API_SERVER=api.free-stg.openshift.com:443 +OAUTH_ISSUER=https://api.free-stg.openshift.com:443 +PROXY_PASS_URL=https://api.free-stg.openshift.com:443 +K8S_API_SERVER_BASE_PATH=/ +OAUTH_AUTHORIZE_URI=https://api.free-stg.openshift.com:443/oauth/authorize +AUTH_LOGOUT_URI=https://api.free-stg.openshift.com:443/connect/endsession?id_token={{id_token}} +IMAGE_TAG=standalone +K8S_API_SERVER_PROTOCOL=https +OAUTH_CLIENT_ID=fabric8 +OAUTH_SCOPE=user:full diff --git a/openshift/fabric8-planner.app.yml b/openshift/fabric8-planner.app.yml new file mode 100644 index 000000000..a874cd61a --- /dev/null +++ b/openshift/fabric8-planner.app.yml @@ -0,0 +1,175 @@ +apiVersion: v1 +kind: Template +metadata: + name: f8planner + creationTimestamp: null +objects: +- apiVersion: v1 + kind: DeploymentConfig + metadata: + creationTimestamp: null + generation: 1 + labels: + service: f8planner + app: fabric8-planner + provider: fabric8 + name: f8planner + spec: + replicas: 3 + selector: + service: f8planner + strategy: + resources: {} + rollingParams: + intervalSeconds: 1 + maxSurge: 25% + maxUnavailable: 25% + timeoutSeconds: 600 + updatePeriodSeconds: 1 + type: Rolling + template: + metadata: + creationTimestamp: null + labels: + service: f8planner + app: fabric8-planner + provider: fabric8 + spec: + containers: + - image: fabric8/fabric8-planner:${IMAGE_TAG} + imagePullPolicy: Always + name: f8planner + ports: + - containerPort: 80 + protocol: TCP + env: + - name: WS_K8S_API_SERVER + value: ${WS_K8S_API_SERVER} + - name: K8S_API_SERVER_PROTOCOL + value: ${K8S_API_SERVER_PROTOCOL} + - name: K8S_API_SERVER_BASE_PATH + value: ${K8S_API_SERVER_BASE_PATH} + - name: OAUTH_ISSUER + value: ${OAUTH_ISSUER} + - name: OAUTH_CLIENT_ID + value: ${OAUTH_CLIENT_ID} + - name: OAUTH_SCOPE + value: ${OAUTH_SCOPE} + - name: OAUTH_AUTHORIZE_URI + value: ${OAUTH_AUTHORIZE_URI} + - name: AUTH_LOGOUT_URI + value: ${AUTH_LOGOUT_URI} + - name: FABRIC8_PIPELINES_NAMESPACE + value: ${FABRIC8_PIPELINES_NAMESPACE} + - name: PROXIED_K8S_API_SERVER + value: ${PROXIED_K8S_API_SERVER} + - name: PROXY_PASS_URL + value: ${PROXY_PASS_URL} + - name: FABRIC8_WIT_API_URL + value: ${FABRIC8_WIT_API_URL} + - name: FABRIC8_RECOMMENDER_API_URL + value: ${FABRIC8_RECOMMENDER_API_URL} + - name: FABRIC8_FORGE_API_URL + value: ${FABRIC8_FORGE_API_URL} + - name: FABRIC8_SSO_API_URL + value: ${FABRIC8_SSO_API_URL} + - name: FABRIC8_AUTH_API_URL + value: ${FABRIC8_AUTH_API_URL} + - name: OPENSHIFT_CONSOLE_URL + value: ${OPENSHIFT_CONSOLE_URL} + resources: {} + terminationMessagePath: /dev/termination-log + readinessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 20 + timeoutSeconds: 10 + livenessProbe: + tcpSocket: + port: 8080 + initialDelaySeconds: 120 + timeoutSeconds: 10 + dnsPolicy: ClusterFirst + restartPolicy: Always + securityContext: {} + terminationGracePeriodSeconds: 30 + test: false + triggers: + - type: ConfigChange + status: {} +- apiVersion: v1 + kind: Service + metadata: + creationTimestamp: null + labels: + service: f8planner + app: fabric8-planner + provider: fabric8 + name: f8planner + spec: + ports: + - name: "8080" + port: 8080 + protocol: TCP + targetPort: 8080 + selector: + service: f8planner + sessionAffinity: None + type: ClusterIP + status: + loadBalancer: {} +- apiVersion: v1 + kind: Route + metadata: + creationTimestamp: null + labels: + service: f8planner + app: fabric8-planner + provider: fabric8 + name: fabric8-planner + spec: + host: '' + port: + targetPort: "8080" + to: + kind: Service + name: f8planner + weight: 100 + wildcardPolicy: None + status: {} +parameters: +- name: IMAGE_TAG + value: standalone +- name: WS_K8S_API_SERVER + value: api.free-int.openshift.com:443 +- name: K8S_API_SERVER_PROTOCOL + value: https +- name: K8S_API_SERVER_BASE_PATH + value: /_p/oso +- name: OAUTH_ISSUER + value: https://api.free-int.openshift.com:443 +- name: OAUTH_CLIENT_ID + value: fabric8 +- name: OAUTH_SCOPE + value: user:full +- name: OAUTH_AUTHORIZE_URI + value: https://api.free-int.openshift.com:443/oauth/authorize +- name: AUTH_LOGOUT_URI + value: https://api.free-int.openshift.com:443/connect/endsession?id_token={{id_token}} +- name: FABRIC8_PIPELINES_NAMESPACE +- name: PROXY_PASS_URL + value: https://api.free-int.openshift.com:443 +- name: OPENSHIFT_CONSOLE_URL + value: https://console.free-int.openshift.com/console/ +- name: PROXIED_K8S_API_SERVER + value: api.free-int.openshift.com:443 +- name: FABRIC8_WIT_API_URL + value: https://api.prod-preview.openshift.io/api/ +- name: FABRIC8_RECOMMENDER_API_URL + value: https://api-bayesian.dev.rdu2c.fabric8.io/api/v1/ +- name: FABRIC8_FORGE_API_URL + value: https://forge.api.prod-preview.openshift.io +- name: FABRIC8_SSO_API_URL + value: https://sso.prod-preview.openshift.io/ +- name: FABRIC8_AUTH_API_URL + value: https://auth.prod-preview.openshift.io/api/ diff --git a/planner.kedge b/planner.kedge new file mode 100644 index 000000000..a2aec4111 --- /dev/null +++ b/planner.kedge @@ -0,0 +1,12 @@ +name: fabric8-planner +containers: +- image: "fabric8/fabric8-planner:standalone" + env: + - name: PROXY_PASS_URL + value: https://api.free-int.openshift.com +services: +- name: planner + type: NodePort + ports: + - port: 8080 + nodePort: 31200 diff --git a/runtime/Dockerfile.deploy b/runtime/Dockerfile.deploy new file mode 100644 index 000000000..b69da2973 --- /dev/null +++ b/runtime/Dockerfile.deploy @@ -0,0 +1,12 @@ +FROM fabric8/fabric8-openshift-nginx:vd83b3a1 +MAINTAINER "Pete Muir " + +USER root + +RUN rm -rf /usr/share/nginx/html/ +COPY dist /usr/share/nginx/html +RUN chmod -R 777 /var/lib/nginx/ +RUN chmod -R 777 /usr/share/nginx/html/ + + +USER ${FABRIC8_USER_NAME} diff --git a/runtime/config/webpack.dev.js b/runtime/config/webpack.dev.js index 517b682e3..a01ae7018 100644 --- a/runtime/config/webpack.dev.js +++ b/runtime/config/webpack.dev.js @@ -9,10 +9,10 @@ const ENV = process.env.ENV || process.env.NODE_ENV || 'development'; // if env is 'inmemory', the inmemory debug resource is used const API_URL = process.env.API_URL || (ENV === 'inmemory' ? 'app/' : 'http://localhost:8080/api/'); const FORGE_URL = process.env.FORGE_URL || 'http://localhost:8080/forge'; -const FABRIC8_WIT_API_URL = process.env.FABRIC8_WIT_API_URL || 'http://localhost:8080/api/'; -const FABRIC8_AUTH_API_URL = process.env.FABRIC8_AUTH_API_URL || 'http://localhost:8089/api/'; -const FABRIC8_SSO_API_URL = process.env.FABRIC8_SSO_API_URL || 'https://sso.prod-preview.openshift.io/'; -const FABRIC8_REALM = process.env.FABRIC8_REALM || "fabric8"; +const FABRIC8_WIT_API_URL = 'https://api.prod-preview.openshift.io/api/'; +const FABRIC8_AUTH_API_URL ='https://auth.prod-preview.openshift.io/api/'; +const FABRIC8_SSO_API_URL = 'https://sso.prod-preview.openshift.io/'; +const FABRIC8_REALM = process.env.FABRIC8_REALM || "fabric8-test"; const FABRIC8_RECOMMENDER_API_URL = process.env.FABRIC8_RECOMMENDER_API_URL; const FABRIC8_FORGE_URL = process.env.FABRIC8_FORGE_URL; const PUBLIC_PATH = process.env.PUBLIC_PATH || '/';