book
  • README
  • cheatsheet
    • bash
      • builtin
      • syntactic sugar
      • cmd
      • havefun
    • text-processing
      • awk
      • sed
      • html
      • json
      • regex
      • unicode
    • osx
    • curl
    • tricky
    • widget
    • proxy
    • colors
    • math
    • media
    • ssl
      • keystore
      • verification
      • server
      • client
      • tricky
    • windows
      • powershell
      • choco
      • wsl
      • wt
      • shortcut
      • clsid
      • env
      • shell:folder
  • vim
    • nvim
    • install
    • color
    • plugins
      • usage
      • other plugins
      • deprecated
    • tricky
    • viml
    • windows
    • troubleshooting
  • devops
    • admin tools
    • ssh
    • git
      • config
      • alias
      • submodule
      • eol
      • example
      • gerrit
        • gerrit API
      • github
      • troubleshooting
      • tricky
      • statistics
    • pre-commit
    • release-tools
    • tmux
      • cheatsheet
    • ansible
    • vault
    • artifactory
      • api
      • cli
      • aql
      • nginx cert
    • klocwork
      • kwadmin
      • kwserver
      • api
      • q&a
    • elk
    • mongodb
    • android
    • mobile
  • jenkins
    • config
      • windows
    • appearance
    • troubleshooting
    • jenkinsfile
      • utility
      • parallel
      • build
      • envvar
      • properties
      • trigger
      • node
    • script
      • job
      • build
      • stage
      • agent
      • security & authorization
      • exception
      • monitor
      • tricky
    • api
      • blueocean
    • cli
    • plugins
      • kubernetes
      • docker
      • shared-libs
      • lockable-resource
      • ansicolor
      • badge
      • groovy-postbuild
      • simple-theme
      • customizable-header
      • artifactory
      • jira-steps
      • job-dsl
      • build-timeline
      • crumbIssuer
      • coverage
      • uno-choice
      • tricky
  • virtualization
    • kubernetes
      • init
        • kubespray
        • kubeadm
          • environment
          • crio v1.30.4
          • docker v1.15.3
          • HA
        • addons
        • etcd
      • kubectl
        • pod
        • deploy
        • replicasets
        • namespace
        • secrets
      • node
      • certificates
      • events
      • kubeconfig
      • kubelet
      • troubleshooting
      • cheatsheet
      • auth
      • api
      • tools
        • monitor
        • helm
        • network
        • minikube
    • docker
      • run & exec
      • voume
      • remove
      • show info
      • dockerfile
      • dockerd
      • tricky
      • troubleshooting
      • windows
    • crio
    • podman
  • ai
    • prompt
  • osx
    • apps
      • init
      • brew
    • defaults
    • system
    • network
    • script
    • tricky
  • linux
    • devenv
    • util
      • time & date
      • output formatting
      • params
      • tricky
    • nutshell
    • disk
    • network
    • troubleshooting
    • system
      • apt/yum/snap
      • authorization
      • apps
      • x11
    • ubuntu
      • systemctl
      • x
    • rpi
  • programming
    • groovy
    • python
      • config
      • basic
      • list
      • pip
      • q&a
    • others
    • archive
      • angular
      • maven
      • mysql
        • installation
        • logs
      • ruby
        • rubyInstallationQ&A
  • tools
    • fonts
    • html & css
    • Jira & Confluence
    • node & npm
      • gitbook
      • hexo
      • github.page
      • code themes
    • app
      • microsoft office
      • vscode
      • virtualbox
      • iterm2
      • browser
      • skype
      • teamviewer
      • others
  • quotes
  • english
Powered by GitBook
On this page
  • setup cli
  • execute groovy script via cli
  • execute groovysh
  • execute cil via kubectl
  • man cli

Was this helpful?

  1. jenkins

cli

PreviousblueoceanNextplugins

Last updated 10 months ago

Was this helpful?

references:

setup cli

export JENKINS_DOMAIN=<jenkins.sample.com>

get port

$ curl -Lv https://${JENKINS_DOMAIN}/login 2>&1 | grep -i 'x-ssh-endpoint'
< x-ssh-endpoint: jenkins.sample.com:31232

$ k -n ci get svc jenkins-discovery -o yaml
apiVersion: v1
kind: Service
metadata:
  ...
spec:
  ports:
  - name: jenkins-agent
    nodePort: 3xxxx
    port: 50000
    protocol: TCP
    targetPort: jnlp-port
  - name: cli-agent
    nodePort: 32123
    port: 31232
    protocol: TCP
    targetPort: cli-port
  selector:
    app: jenkins
...
  • Jenkins config

  • ~/.ssh/config

$ cat ~/.ssh/config
Host  jenkins.sample.com
      User                marslo
      IdentityFile        ~/.ssh/marslo
      Port                32123
  • using cli

$ ssh -q ${JENKINS_DOMAIN} help
  add-job-to-view
    Adds jobs to view.
  apply-configuration
    Apply YAML configuration to instance
  build
    Builds a job, and optionally waits until its completion.
  cancel-quiet-down
    Cancel the effect of the "quiet-down" command.
  channel-process
    Launch a new JVM on a slave and connect it with the master with remoting
  ...
  • or

    $ ssh -l <user> -i <ssh-private-key> -p <port> ${JENKINS_DOMAIN} <command>
    
    # example
    $ ssh -l marslo -i ~/.ssh/marslo -p 32123 ${JENKINS_DOMAIN} help
  • get client (jenkins-cli.jar)

    $ curl -fsSL -O [-u<username>:<password>] https://${JENKINS_DOMAIN}/jnlpJars/jenkins-cli.jar
    
    # or
    $ curl -fsSL -O --netrc-file ~/.marslo/.netrc' https://${JENKINS_DOMAIN}/jnlpJars/jenkins-cli.jar
    $ cat ~/.marslo/.netrc
    machine <JENKINS_DOMAIN>
    login myaccount
    password mypassword
  • use cli

    $ java -jar jenkins-cli.jar -auth <username>:<password> -s https://${JENKINS_DOMAIN} <command>
    
    # example
    $ java -jar jenkins-cli.jar -auth marslo:<MY-CLI-TOKEN> -s https://${JENKINS_DOMAIN} help
      add-job-to-view
        Adds jobs to view.
      apply-configuration
        Apply YAML configuration to instance
      build
        Builds a job, and optionally waits until its completion.
      cancel-quiet-down
        Cancel the effect of the "quiet-down" command.
      ...

handle -auth

  • using directly in command line

    $ java -jar jenkins-cli.jar -auth marslo:<MY-CLI-TOKEN> -s https://${JENKINS_DOMAIN}
  • using file

    $ echo 'marslo:<MY-CLI-TOKEN> ~/.marslo/.jenkins-cli'
    $ java -jar jenkins-cli.jar -auth @/Users/marslo/.marslo/.jenkins-cli -s https://${JENKINS_DOMAIN}
  • using environment

    $ export JENKINS_USER_ID=marslo
    $ export JENKINS_API_TOKEN=<MY-CLI-TOKEN>
    $ java -jar jenkins-cli.jar -s https://${JENKINS_DOMAIN}

jnlp

[!NOTE|label:references:]

ERROR: This command is requesting the -remoting mode which is no longer supported

$ ssh -q <jenkins.domain.name> groovy <script.groovy>

solution

$ ssh -q <jenkins.domain.name> groovy = < /path/to/script.groovy
  • i.e.:

    $ cat a.groovy
    println System.getProperties().sort().findAll{ it.key.contains('java') }.collect{ "${it.key} ~> ${it.value}" }.join('\n')
    
    $ ssh jenkins.example.com groovy =< ./a.groovy | head -4
    java.awt.graphicsenv ~> sun.awt.X11GraphicsEnvironment
    java.awt.headless ~> true
    java.awt.printerjob ~> sun.print.PSPrinterJob
    java.class.path ~> /usr/share/jenkins/jenkins.war
    ...

execute groovysh

$ ssh <jenkins.domina.name> groovysh
groovy:000> println System.getProperties().sort().collect{ "${it.key} ~> ${it.value}" }.join('\n')
awt.toolkit ~> sun.awt.X11.XToolkit
com.cloudbees.workflow.rest.external.ChangeSetExt.resolveCommitAuthors ~> true
executable-war ~> /usr/share/jenkins/jenkins.war
file.encoding ~> UTF-8
file.separator ~> /

execute the script via https

[!TIP|label:references:]

A Jenkins Admin can execute groovy scripts remotely by sending an HTTP POST request to /script/ url or /scriptText/.

  • format

    $ curl -d "script=<your_script_here>" https://jenkins/script
    
    # or to get output as a plain text result (no HTML)
    $ curl -d "script=<your_script_here>" https://jenkins/scriptText
  • $ curl --data-urlencode "script=$(< ./somescript.groovy)" https://jenkins/scriptText
    
    # or
    $ curl --user 'username:api-token' --data-urlencode \
           "script=$(< ./somescript.groovy)" https://jenkins/scriptText
  • example : Python submitting groovy file providing username and api token

    with open('somescript.groovy', 'r') as fd:
        data = fd.read()
    r = requests.post('https://jenkins/scriptText', auth=('username', 'api-token'), data={'script': data})

execute cil via kubectl

[!TIP|label:references:]

$ kubectl exec -it po/jenkins-0 -c jenkins -- bash -c
    'echo \'println(hudson.util.Secret.fromString("test").getEncryptedValue())'
    | java -jar /var/jenkins_home/war/WEB-INF/lib/cli-2.303.1.jar
    s http://0.0.0.0:8080
    auth Admin:$(cat /run/secrets/chart-admin-password)
    groovy = '
{AQAAABAAAAAQGiN0B2weIsYfpg0LqBbM7WSBn9+zSBcH4OXyYpaVVig=}
$

man cli

CMD
DESCRIPTION

add-job-to-view

Adds jobs to view.

apply-configuration

Apply YAML configuration to instance

build

Builds a job, and optionally waits until its completion.

cancel-quiet-down

Cancel the effect of the "quiet-down" command.

check-configuration

Check YAML configuration to instance

clear-queue

Clears the build queue.

connect-node

Reconnect to a node(s)

console

Retrieves console output of a build.

copy-job

Copies a job.

create-credentials-by-xml

Create Credential by XML

create-credentials-domain-by-xml

Create Credentials Domain by XML

create-job

Creates a new job by reading stdin as a configuration XML file.

create-node

Creates a new node by reading stdin as a XML configuration.

create-view

Creates a new view by reading stdin as a XML configuration.

declarative-linter

Validate a Jenkinsfile containing a Declarative Pipeline

delete-builds

Deletes build record(s).

delete-credentials

Delete a Credential

delete-credentials-domain

Delete a Credentials Domain

delete-job

Deletes job(s).

delete-node

Deletes node(s)

delete-view

Deletes view(s).

disable-job

Disables a job.

disable-plugin

Disable one or more installed plugins.

disconnect-node

Disconnects from a node.

enable-job

Enables a job.

enable-plugin

Enables one or more installed plugins transitively.

export-configuration

Export jenkins configuration as YAML

get-credentials-as-xml

Get a Credentials as XML (secrets redacted)

get-credentials-domain-as-xml

Get a Credentials Domain as XML

get-gradle

List available gradle installations

get-job

Dumps the job definition XML to stdout.

get-node

Dumps the node definition XML to stdout.

get-view

Dumps the view definition XML to stdout.

groovy

Executes the specified Groovy script.

groovysh

Runs an interactive groovy shell.

help

Lists all the available commands or a detailed description of single command.

import-credentials-as-xml

Import credentials as XML. The output of "list-credentials-as-xml" can be used as input here as is, the only needed change is to set the actual Secrets which are redacted in the output.

install-plugin

Installs a plugin either from a file, an URL, or from update center.

keep-build

Mark the build to keep the build forever.

list-changes

Dumps the changelog for the specified build(s).

list-credentials

Lists the Credentials in a specific Store

list-credentials-as-xml

Export credentials as XML. The output of this command can be used as input for "import-credentials-as-xml" as is, the only needed change is to set the actual Secrets which are redacted in the output.

list-credentials-context-resolvers

List Credentials Context Resolvers

list-credentials-providers

List Credentials Providers

list-jobs

Lists all jobs in a specific view or item group.

list-plugins

Outputs a list of installed plugins.

mail

Reads stdin and sends that out as an e-mail.

offline-node

Stop using a node for performing builds temporarily, until the next "online-node" command.

online-node

Resume using a node for performing builds, to cancel out the earlier "offline-node" command.

quiet-down

Quiet down Jenkins, in preparation for a restart. Don’t start any builds.

reload-configuration

Discard all the loaded data in memory and reload everything from file system. Useful when you modified config files directly on disk.

reload-jcasc-configuration

Reload JCasC YAML configuration

reload-job

Reload job(s)

remove-job-from-view

Removes jobs from view.

replay-pipeline

Replay a Pipeline build with edited script taken from standard input

restart

Restart Jenkins.

restart-from-stage

Restart a completed Declarative Pipeline build from a given stage.

safe-restart

Safely restart Jenkins.

safe-shutdown

Puts Jenkins into the quiet mode, wait for existing builds to be completed, and then shut down Jenkins.

session-id

Outputs the session ID, which changes every time Jenkins restarts.

set-build-description

Sets the description of a build.

set-build-display-name

Sets the displayName of a build.

set-external-build-result

Set external monitor job result.

shutdown

Immediately shuts down Jenkins server.

stop-builds

Stop all running builds for job(s)

update-credentials-by-xml

Update Credentials by XML

update-credentials-domain-by-xml

Update Credentials Domain by XML

update-job

Updates the job definition XML from stdin. The opposite of the get-job command.

update-node

Updates the node definition XML from stdin. The opposite of the get-node command.

update-view

Updates the view definition XML from stdin. The opposite of the get-view command.

version

Outputs the current version.

wait-node-offline

Wait for a node to become offline.

wait-node-online

Wait for a node to become online.

who-am-i

Reports your credential and permissions.

example :

ssh
jenkins-cli.jar
How to find JNLP Node’s secret key remotely?
Structure of the JNLP File
execute groovy script via cli
Script Console
imarslo : script console
curl submitting groovy file via bash
Secrets handling in Kubernetes - A Jenkins story
Jenkins World 2017: Mastering the Jenkins Script Console
Jenkins Area Meetup - Hacking on Jenkins Internals - Jenkins Script Console
Write Groovy scripts for Jenkins with code completion
Example Groovy scripts
Jenkins Startup logs show builds migrated by the RunIdMigrator
How to create a job using the REST API and cURL?
Creating node with the REST API
setup cli
get port
ssh
jenkins-cli.jar
jnlp
execute groovy script via cli
ERROR: This command is requesting the -remoting mode which is no longer supported
solution
execute groovysh
execute the script via https
execute cil via kubectl
man cli
jenkins-cli-port
jenkins-cli-ssh