DEV Community

Rick
Rick

Posted on

Managing Jenkins with jcli

As a developer, I usually use Jenkins like this:

  • Find a job which is related to my current work
  • Trigger that job
  • Check the output of the build log

Sometimes, I might need to check the update center. Maybe a new plugin is needed, or I need to update an existing plugin.
Or, I want to upload a plugin from my computer. For all these cases, I just don't need a UI or even a browser.
I like to use a CLI to complete most of my tasks. For example, I use kubectl to manage my Kubernetes cluster,
to create or modify the kubernetes resources. So, I start to think, 'Why not use a CLI to manage my Jenkins?'.

Why create a new one?

First, I almost forgot about the existing https://jenkins.io/doc/book/managing/cli/[Jenkins CLI], written in Java. Let me introduce how to use that one.

Visit Jenkins page from http://localhost:8080/jenkins/cli/. You'll see a command like java -jar jenkins-cli.jar -s http://localhost:8080/jenkins/ help. So, a jar file needs to be download.
We can use this command to complete this task wget http://localhost:8080/jenkins/jnlpJars/jenkins-cli.jar.

Now you can see that this is not a Linux-style CLI. Please consider some points below:

  • The users must have a JRE. This is not convenient for developers who don't use Java.
  • The CLI is too wordy. We always need to type java -jar jenkins-cli.jar -s http://localhost:8080/jenkins/ as the initial command.
  • Cannot install it by some popular package manager, like brew or yum.

Of course, the Java CLI client is more native with Jenkins. But I'd like to use this more easily.
So I decided to create a new CLI tool that would be written in Go and which would natively run on modern platforms.

That's the story of creating jcli.

Features

  • Easy to maintain config file for jcli
  • Multiple Jenkins support
  • Plugins management (list, search, install, upload)
  • Job management (search, build, log)
  • Open your Jenkins with a browser
  • Restart your Jenkins
  • Connection with proxy support

How to get it?

You can clone jcli from https://github.com/jenkins-zh/jenkins-cli/[the jenkins-cli repo]. For now, we support
these three most popular OS platforms: macOS, Linux, and Windows.

MacOS

You can use brew to install jcli.

brew tap jenkins-zh/jcli
brew install jcli

Linux

It's very simple to install jcli into your Linux OS. Just need to execute a command line at below:

curl -L https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-linux-amd64.tar.gz|tar xzv
sudo mv jcli /usr/local/bin/

Windows

You can find the latest version by clicking https://github.com/jenkins-zh/jenkins-cli/releases/latest/download/jcli-windows-386.tar.gz[here]. Then download the tar file, cp the uncompressed jcli directory into your system path.

How to get started?

It's very simple to use this. Once you get jcli on your computer, use this command to generate a sample configuration:

$ jcli config generate
current: yourServer
jenkins_servers:
- name: yourServer
  url: http://localhost:8080/jenkins
  username: admin
  token: 111e3a2f0231198855dceaff96f20540a9
  proxy: ""
  proxyAuth: ""
# Goto 'http://localhost:8080/jenkins/me/configure', then you can generate your token.

In most cases, you should modify three fields which are url, username and token. OK, I believe you're ready. Please check whether you install the github plugin in your Jenkins:

jcli plugin list --filter name=github

That's the end. It's still in the very early development stage. Any contribution is welcome.

It was published originally from jenkins.io

Top comments (0)