JX is a command line tool for installing and using Jenkins X.
Check out how to install jx.
Please check out the Getting Started Guide on how to:
We value respect and inclusiveness and follow the CDF Code of Conduct in all interactions.
We’d love to talk with you about Jenkins X and are happy to help if you have any questions.
Talk to us on our slack channels, which are part of the Kubernetes slack. Join Kubernetes slack here and find us on our channels:
Find out more about our bi-weekly office hours, where we discuss all things Jenkins X, and other events here.
To find out the available commands type:
Or to get help on a specific command, say,
create then type:
jx help create
You can also browse the jx command reference documentation.
To open the Jenkins console try:
Or to open other consoles:
jx open foo
If you do not know the name:
To tail the logs of anything running on Kubernetes (jenkins or your own applications) type.
Which prompts you for the deployment to log then tails the logs of the newest pod for an app.
You can filter the list of deployments via:
jx logs -f cheese
Then if there's only one deployment with a name that contains
cheese then it'll tail the logs of the latest pod or will prompt you to choose the exact deployment to use.
You can open a remote shell inside any pods container via the
Or to open a shell inside a pod named foo:
jx rsh foo
-c to specify the container name. e.g. to open a shell in a maven build pod:
jx rsh -c maven maven
To import an application from the current directory:
Or to create a new Spring Boot application from scratch:
jx create spring
e.g. to create a new WebMVC and Spring Boot Actuator microservice try this:
jx create spring -d web -d actuator
If you have a Maven Archetype you would like to create then use:
jx create archetype
To start a pipeline using a specific name try:
jx start pipeline myorg/myrepo
Or to pick the pipeline to start:
jx start pipeline
If you know part of the name of the pipeline to run you can filter the list via:
jx start pipeline -f thingy
You can start and tail the build log via:
jx start pipeline -t
To view environments for a team:
jx get env
To view the application versions across environments:
jx get version
Typically we setup Environments to use automatic promotion so that the CI / CD pipelines will automatically promote versions through the available Environments using the CI / CD Pipeline.
However if you wish to manually promote a version to an environment you can use the following command:
jx promote myapp -e prod
Or if you wish to use a custom namespace:
jx promote myapp -n my-dummy-namespace
jx CLI tool uses the same Kubernetes cluster and namespace context as
You can switch Environments via:
Or change it via:
jx env staging jx env prod
To display the current environment without trying to change it:
jx env -b
To view all the environments type:
jx get env
You can create or edit environments too:
jx create env jx edit env staging
You can switch namespaces in the same way via:
jx ns awesome-staging
If you have multiple Kubernetes clusters (e.g. you are using GKE and Minikube together) then you can switch between them via:
In the same way. Or via
jx ctx minikube
Note that changing the namespace ,environment or cluster changes the current context for ALL shells!
So if you want to work temporarily with, say, the production cluster we highly recommend you use a sub shell for that.
jx shell my-prod-context
Or to pick the context to use for the sub shell:
Then your bash prompt will be updated to reflect that you are in a different context and/or namespace. Any changes to the namespace, environment or context will be local to the current shell only!
You can use the
jx prompt to configure your CLI prompt to display the current team and environment you are working within:
# Enable the prompt for bash PS1="[\u@\h \W \$(jx prompt)]\$ " # Enable the prompt for zsh PROMPT='$(jx prompt)'$PROMPT
Note that the prompt is updated automatically for you via the
jx shell command too.
On a Mac to enable bash completion try:
jx completion bash > ~/.jx/bash source ~/.jx/bash
source <(jx completion bash)
For more help try:
jx help completion bash
We are adding a number of addon capabilities to Jenkins X. To add or remove addons use the
jx create addon or
jx delete addon commands.
For example to add the Gitea Git server to your Jenkins X installation try:
jx create addon gitea
jx create git server giteacommand).
jx create git user -n giteacommand).
jx create git token -n gitea -p password usernamecommand).
We have tried to collate common issues here with work arounds. If your issue isn't listed here please let us know.
If you are using a Mac then
hyperkit is the best VM driver to use - but does require you to install a recent Docker for Mac first. Maybe try that then retry
jx create cluster minikube?
If your Minikube is failing to startup then you could try:
minikube delete rm -rf ~/.minikube
rm fails you may need to do:
sudo rm -rf ~/.minikube
jx create cluster minikube again - did that help? Sometimes there are stale certs or files hanging around from old installations of minikube that can break things.
Sometimes a reboot can help in cases where virtualisation goes wrong ;)
Otherwise you could try follow the Minikube instructions:
If you are using Minikube on a mac with hyperkit and find Minikube fails to start with a log like:
Temporary Error: Could not find an IP address for 46:0:41:86:41:6e Temporary Error: Could not find an IP address for 46:0:41:86:41:6e Temporary Error: Could not find an IP address for 46:0:41:86:41:6e Temporary Error: Could not find an IP address for 46:0:41:86:41:6e
It could be you have hit this issue in Minikube and hyperkit.
The work around is to try the following:
Then try again. Hopefully this time it will work!
When running Minikube locally
jx defaults to using nip.io as a way of using nice-isn DNS names for services and working around the fact that most laptops can't do wildcard DNS. However sometimes nip.io has issues and does not work.
To avoid using nip.io you can do the following:
Edit the file
~/.jx/cloud-environments/env-minikube/myvalues.yaml and add the following content:
expose: Args: - --exposer - NodePort - --http - "true"
jx install and this will switch the services to be exposed on
node ports instead of using ingress and DNS.
So if you type:
You'll see all the URLs of the form
http://$(minikube ip):somePortNumber which then avoids going through nip.io - it just means the URLs are a little more cryptic using magic port numbers rather than simple host names.
Please let us know and see if we can help? Good luck!
We welcome your contributions.