WARNING: Jenkins X version 2.x is unmaintained. Do not use it.
Please refer to the v3 documentation for the latest supported version.
Configuration questions
How do I add a user to my Jenkins X installation?
Jenkins X assumes each user has access to the same development kubernetes cluster that Jenkins X is running on.
If your user does not have access to the kubernetes cluster we need to setup their ~/.kube/config
file so that they can access it.
If you are using Google’s GKE then you can browse the GKE Console to view all the clusters and click on the Connect
button next to your development cluster and then that lets you copy/paste the command to connect to the cluster.
For other clusters we are planning on writing some CLI commands to export and import the kube config.
Once the user has access to the kubernetes cluster
Once your user has access to the kubernetes cluster:
If Jenkins X was installed in the namespace jx
then the following should switch your context to the jx
namespace:
jx ns jx
To test you should be able to type:
jx get env
jx open
To view the environments and any development tools like the Jenkins or Nexus consoles.
How does access control and security work?
See the access control documentation
How do I upgrade the jx binary used inside the builds when using serverless jenkins?
We use specific BuildTemplates
for different programming languages. These BuildTemplates
describe the steps that will be executed as part of the job, which in case of the Jenkins X BuildTemplates, they all execute the JenkinsfileRunner
to execute the project’s Jenkinsfile.
$ kubectl get buildtemplates
NAME AGE
environment-apply 9d
environment-build 9d
jenkins-base 9d
jenkins-csharp 9d
jenkins-cwp 9d
jenkins-elixir 9d
jenkins-filerunner 9d
jenkins-go 9d
jenkins-go-nodocker 9d
jenkins-go-script-bdd 1d
jenkins-go-script-ci 1d
jenkins-go-script-release 1d
jenkins-gradle 9d
jenkins-javascript 9d
jenkins-jenkins 9d
jenkins-maven 9d
jenkins-python 9d
jenkins-rust 9d
jenkins-scala 9d
jenkins-test 9d
knative-chart-ci 9d
knative-chart-release 9d
knative-deploy 9d
knative-maven-ci 9d
knative-maven-release 9d
The docker image that has the Jenkinsfile
runner has also other tools installed, like the jx
binary. If you need to update jx to a newer version, you need to modify the base Dockerfile used for the Jenkinsfile runner step of the BuildTemplate, so that it uses the jx version that you want. Althought this is normally done automatically.
Once this is done, you need to change the BuildTemplate in your cluster so that it starts using the new version of the docker image. For example, you can see the current version of this image for the Go BuildTemplate in your cluster
$ kubectl describe buildtemplate jenkins-go | grep Image
Image: jenkinsxio/jenkins-go:256.0.44
If you want to use a different version that uses a newer jx version you could manually change all the BuildTemplates but instead let’s jx take care of it
jx upgrade addon jx-build-templates
Check that the change has been done
$ kubectl describe buildtemplate jenkins-go | grep Image
Image: jenkinsxio/jenkins-go:256.0.50
How does --prow
differ from --gitops
--prow
uses serverless jenkins and uses prow to implement ChatOps on Pull Requests.--gitops
is still work in progress but will use GitOps to manage the Jenkins X installation (the dev environment) so that the platform installation is all stored in a git repo and upgrading / adding Apps / changing config is all changed via Pull Requests like changes to promotion of applications to the Staging or Production environments
How do I reuse my existing Ingress controller?
By default when you install Jenkins X into an existing kubernetes cluster it prompts you if you want to install an Ingress controller. Jenkins X needs an Ingress controller of some kind so that we can setup Ingress
resources for each Service
so we can access web applications via URLs outside of the kubneretes cluster (e.g. inside web browsers).
The jx install command takes a number of CLI arguments starting with --ingress
where you can point to the namespace, deployment name and service name of the ingress controller you wish to use for the installation.
We do recommend you use the default ingress controller if you can - as we know it works really well and only uses a single LoadBalancer IP for the whole cluster (your cloud provider often charges per IP address). However if you want to point at a different ingress controller just specify those arguments on install:
jx install \
--ingress-service=$(yoursvcname) \
--ingress-deployment=$(yourdeployname) \
--ingress-namespace=kube-system
How do I enable HTTPS URLs?
In general use the jx upgrade ingress command.
For more detail see these blogs posts:
- Upgrading Ingress Rules And Adding TLS Certificates With Jenkins X by Viktor Farcic
- Jenkins X — TLS enabled Previews by Steve Boardwell
- Jenkins X — Securing the Cluster by Steve Boardwell
How do I change the URLs in an environment?
We use exposecontroller to automate the setup of Ingress
resources for exposed Services, enabling TLS and also injecting external URLs for services into code (e.g. so we can register webhooks).
The default UrlTemplate
for each environment is of the form: {{.Service}}.{{.Namespace}}.{{.Domain}}
where Service
is the name of the service, Namespace
is the kubernetes namespace and Domain
is the configured DNS domain.
If you want to modify the URL schemes of your service in an environment then edit the file env/values.yaml
in your Environments git repository. To find the URLs to each source repository use the jx get environments command.
Then modify the contents of env/values.yaml
to include the urlTemplate:
value as follows:
expose:
config:
urltemplate: "{{.Service}}-{{.Namespace}}.{{.Domain}}"
We’ve left out the other values of expose:
and config:
for brevity - the important thing is to ensure you specify a custom expose.config.urltemplate
value. The default is {{.Service}}.{{.Namespace}}.{{.Domain}}
if none is specified.
Whenever you modify the git repository for an environment the GitOps pipeline will run to update your Ingress resources to match your UrlTemplate
.
Is there a UI available for Jenkins X?
We have a new OSS UI for Jenkins X powered by the awesome extensible Octant! You can watch James Strachan demo the UI here. Find out more about the new Jenkins X UI and how extensible it is here.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.