Update Guide to version 2.x for OpenDevStack users
Learn all about how to update your OpenDevStack based project to ODS 2.x.
It is assumed that you are updating from ODS 1.2.x. |
Required steps
Update image tags of Jenkins deployments
Go into your OpenShift *-cd
namespace and edit (via "Actions" > "Edit") the deployments (jenkins
and
webhook-proxy
) to point to the new image tags (2.x
), and trigger a deployment.
Update Jenkinsfiles in Git repositories
Edit every Jenkinsfile
. The shared library should point to 2.x
, e.g.:
library identifier: 'ods-library@2.x', retriever: modernSCM(
[$class: 'GitSCMSource',
remote: sharedLibraryRepository,
credentialsId: credentialsId])
Also, the image used to run the pipeline in should point to 2.x
, e.g.:
odsPipeline(
image: "${dockerRegistry}/cd/jenkins-slave-maven:2.x",
...
)
Grant image-puller rights to your *-cd
namespace
This step is not strictly necessary, but recommended as projects created with
version 2.x
will have those rights by default. Having this setup will enable
you to use the *-cd
namespace for common base images to reduce build times.
Run the following, replacing $PROJECT_ID
with your project ID:
oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-test -n $PROJECT_ID-cd
oc policy add-role-to-group system:image-puller system:serviceaccounts:$PROJECT_ID-dev -n $PROJECT_ID-cd
Note that you need to be an admin on your project in order to run those commands. For more information, see ods-core#293.
Component resource constraints
Newly created components now have memory quotas (ods-quickstarters#12) and CPU quotas (ods-quickstarters#74) configured.
It is recommended (though not required) to configure resource constraints for existing components as well. If you are unsure which values to set, refer to the new defaults and check the current usage in the "Metrics" section in OpenShift.
Notable changes
Component deployment behaviour
In the shared library, rollouts will be triggered manually now when no config/image trigger exists on the DeploymentConfig.
Jenkins slave NodeJS 8
The cd/jenkins-slave-nodejs8-angular
image has been discontinued. Please update to
cd/jenkins-slave-nodejs10-angular
. For more information, see ods-quickstarters#71.
New Tailor version
Tailor has been updated to 0.11.0 in the Jenkins slaves, see ods-core#290.
Deprecation of shared-services
namespace
The shared-images
namespace (containing common base images) has been
removed from new ODS 2.0 installation. For existing installations, it is likely
being kept for some time by the cluster administrator to enable users to react
to this change.
If you use a component based on the ds-jupyter-notebook
or ds-rshiny
quickstarters, you should switch to using the new authentication approach, which
is uing an OpenShift OAuth proxy instead of a Nginx service. See
ods-quickstarters#46.
If you use the Airflow Quickstarter, its base images should now be built in your
*-cd
namespace See
ods-quickstarters#60.
New features
SonarQube quality gates
It is now possible to opt-in to failing the build if the SonarQube scan fails
the quality gate defined in SonarQube. To enable this, change the call of
stageScanForSonarqube(context)
to stageScanForSonarqube(context, true)
.
For more information, see ods-jenkins-shared-library#22.
Skopeo
When working with images, you may make use of Skopeo, which is now part of the Jenkins slaves. See ods-core#253.
Common / Known Issues
When provisioning new components, you must use a name that differs from the
component type, otherwise some quickstarters fail. E.g. when creating a new
component of type fe-react
, you cannot name it fe-react
but must choose
another name like my-app
. For more information, see https://github.com/opendevstack/ods-provisioning-app/issues/336.