OpenDevStack Setup

This document will guide you through installing / maintaining an OpenDevStack installation.

Server prerequisites

Installing OpenShift is out of scope for this guide. We assume you have an OpenShift 3.11 cluster running already. If so, ensure that the cluster nodes have vm.max_map_count set to at least 262144, otherwise you’ll not be able to install SonarQube later on. You may change this setting via sudo sysctl -w vm.max_map_count=262144.

If you do not have an OpenShift cluster yet, and just want to try things out, you may use oc cluster up to spin up a temporary cluster. Note that this will only work on Linux and we recommend to have at least 16GB RAM and 32GB of available disk space.

Local Setup

From now on we assume you work from a Bash terminal (Cygwin / Linux). In this terminal, you’ll ned a recent git version (>= 2.13.2) and a recent jq version (>= 1.5, see in your $PATH.


Before you can install OpenDevStack (no matter whether locally or on another server) you need to have the ODS repositories available on your local machine.

For this purpose, ODS provides a script to setup all required repositories with the same Git ref easily. This script needs to be downloaded to the umbrella directory which should hold all ODS respositories. The following example shows how to do this for the master version, please use the exact version you want to install (e.g. v4.0.0):

curl -LO$GIT_REF/scripts/
chmod +x
./ --git-ref $GIT_REF

After running this script, all required repositories should be available locally.


Go to ods-core and run:

make prepare-config

If you want to install OpenDevStack for the first time, leave the BitBucket URL empty.

After the configuration is prepared (which means that a directory ods-configuration will be created if it does not exist yet), fill out all the parameters in ods-core.env in directory ods-configuration for your installation. Add all files of directory ods-configuration to git and commit the result. You don’t need to push yet, this will be done later.

"Preparing" also updates the sample files and checks if any params are present in the sample files but missing from the real file.

If you are using windows Cygwin or WSL remember to change ending line CRLF to LF before commit ods-core.env, you can find more information on configure Git ending line

Atlassian Suite

At this stage you have to setup the Atlassian suite (Jira, Confluence, Bitbucket, Crowd) if it does not exist yet. If you already have an installation the Atlassian suite, you now need to configure it to work with OpenDevStack.

Documentation for the installation and configuration of the Atlassian suite is missing at the moment. The general setup is described in, but this will likely need adaption to your specific environment.

After Crowd is running, ensure that there is a user corresponding to the CD_USER_ID_B64/CD_USER_PWD_B64 parameters in ods-core.env.

Bitbucket Repositories

On Bitbucket, there must be an OPENDEVSTACK project filled with the necessary repositories such as ods-core. To set them up, use:

make prepare-bitbucket-repos

Notice that prepare-bitbucket-repos expects a running Atlassian suite (it will not spin up a new Bitbucket instance).

Then, update them with the latest state so that they can be used e.g. from BuildConfig resources in OpenShift:

make push-local-repos

You also need to update ods-configuration, which can be done via:

git remote add origin <bitbucket-ods-configuration-git-repo-url>
git push -u origin master

Finally, it is required to create a Git ref in the ods-jenkins-shared-library which matches the ODS version you want your users to consume (as specified by ODS_IMAGE_TAG in the configuration):

make set-shared-library-ref

OpenDevStack environment in OpenShift


We use Tailor to handle OpenShift templates and keep OpenDevStack resources in sync. Tailor is a tool which needs to be installed on your local machine. Please see its installation instructions for your platform. Following are the version requirements:

OpenDevStack version Tailor version


>= 1.2.2


>= 0.13.1


= 0.9.3


= 0.9.3


= 0.9.1


= 0.8

Central ODS project

OpenDevStack needs one central project in OpenShift, which will hold all shared resources such as images or deployments. This project is typically called ods, but you can customize this in the configuration via ODS_NAMESPACE.

For the following steps, you must be logged into OpenShift (using oc login <host> --token=<token>) with a user that has cluster-admin rights.

In ods-core run:

make install-ods-project


A central Nexus deployment is used to proxy packages and to store artifacts.

In ods-core run:

make install-nexus

Afterwards, run the initial configuration:

make configure-nexus

In the course of this you will be prompted to set a new admin password.

The configure-nexus target is not idempotent yet, so it cannot be used for upgrading!


A central SonarQube deployment is used to analyze source code.

In ods-core run:

make install-sonarqube

This will launch an instance of SonarQube. The script will prompt for a new admin password. Once this has been set, an auth token for the Jenkins pipelines will be generated. Both values are automatically written into ods-configuration/ods-core.env, which you then need to commit and push.

Also, you have to add the cd-user as a user in the project permissions of your Bitbucket OpenDevStack project. Read permission is sufficient.


Central Jenkins images (master, agent, webhook proxy) are used by every ODS project.

In ods-core run:

make install-jenkins

Then, there are further Jenkins agent images for each quickstarter technology.

To create those images, run the following from ods-quickstarters:

make install-jenkins-agent

Document Generation service

At this stage you can setup or modify the image stream for the Document Generation service.

In ods-core run:

make install-doc-gen

Provisioning Application

At this stage you can setup or modify the provisioning application.

In ods-core run:

make install-provisioning-app

Congratulations! At this point you should have a complete ODS installation. Try it out by provisioning a new project with the provisioning application.