Jenkins CLI 使用方法介绍

发布于:2025-06-28 ⋅ 阅读:(14) ⋅ 点赞:(0)

Jenkins CLI 使用方法介绍

Jenkins 内置了命令行界面(CLI),允许用户从脚本或 shell 环境访问 Jenkins,从而方便地执行日常任务、批量操作和故障排除。运维人员可以通过 SSH 方式HTTP 方式(下载 jenkins-cli.jar 客户端)调用 CLI。SSH 模式使用标准 SSH 登录,例如:ssh -l USER -p PORT JENKINS_HOST command;而 HTTP 模式则通过下载 Jenkins 主机上的 jenkins-cli.jar 实现,无需打开额外端口,更适合跨网络环境使用。使用 HTTP 模式时,推荐通过 -auth 用户:API令牌 进行认证(可在个人设置页面获取 API 令牌)。

基本用法

最常见的 Jenkins CLI 命令之一是 build,用于触发有权限的任何任务或流水线构建。最简单的形式是直接调用它触发构建并立即返回,但通过附加选项可以等待构建完成、实时输出日志等。例如:

# SSH 模式触发构建,不带参数
ssh -l admin -p 22 jenkins.example.com build my-job

或者使用 HTTP 模式的 jenkins-cli.jar

# HTTP 模式触发构建(需替换 JENKINS_URL、用户名和API令牌)
java -jar jenkins-cli.jar -s https://jenkins.example.com -auth admin:abcdef123456 build my-job

执行 build 命令时常用选项包括:-s 等待构建完成、-v 实时输出构建日志、-p KEY=VALUE 传递参数等。例如:

# 等待构建完成并显示日志
ssh -l admin -p 22 jenkins.example.com build my-job -s -v

如果构建需要参数,可以使用 -p 选项依次传递:

# HTTP 模式:触发带参数的构建
java -jar jenkins-cli.jar -s https://jenkins.example.com -auth user:token build deploy-job -s -p ENV=prod -p VERSION=1.2.3

如果对当前 CLI 登录用户和权限有疑问,可使用 who-am-i 命令列出认证信息和授权角色:

ssh -l admin -p 22 jenkins.example.com who-am-i

常见使用场景

  • 远程批量触发构建:运维人员可以在远程服务器上编写脚本,循环调用 jenkins-cli.jarssh 命令,批量触发多个 Jenkins 任务,无需手动点击网页界面。这种方式适用于同时启动一组构建,或者在升级、维护时对多个项目进行并行构建调度。
  • 自动化部署流水线:在自动化部署流程中,可在脚本或其他 CI 系统中调用 Jenkins CLI,将构建过程与后续部署步骤串联起来。例如,一个主流水线完成后使用 CLI 触发下游部署任务,实现跨系统的流水线联动。
  • 定时任务脚本调用:可在操作系统的计划任务(如 cron)中定时执行 Jenkins CLI 命令,在指定时间点自动触发 Jenkins 构建,无需手动干预。如每天凌晨执行一键构建脚本,或者对特定任务做定期健康检查构建。

Jenkins 官方文档指出,CLI 非常适合 日常任务批量更新 等场景,上述用法正是其典型运维应用之一。

案例示范

1. 基本构建触发示例

通过 SSH 模式 触发名为 build-all-software 的任务,并实时输出日志:

ssh -l kohsuke -p 53801 jenkins.example.com build build-all-software -s -v

解释-l kohsuke 指定 Jenkins 用户,-p 53801 为 Jenkins SSH 端口。选项 -s 等待构建完成、-v 实时跟踪日志。运行后会在终端看到如下输出:

Started build-all-software #1
Started from command line by kohsuke
Building in workspace /tmp/jenkins/workspace/build-all-software
...
Completed build-all-software #1 : SUCCESS

2. HTTP 模式带参数构建示例

下载好 jenkins-cli.jar 后,可在任意机器执行 HTTP 模式命令:

java -jar jenkins-cli.jar -s http://jenkins.example.com -auth deployer:abcd1234 build deploy-pipeline -s -p ENV=staging -p VERSION=2025.06.25

解释-auth deployer:abcd1234 使用用户名和 API 令牌认证,-p 后面传递了两个构建参数 ENVVERSION。Jenkins 将使用这些参数启动名为 deploy-pipeline 的流水线。

3. 验证当前用户

使用 who-am-i 命令可以检查当前 CLI 连接的用户身份和权限:

java -jar jenkins-cli.jar -s http://jenkins.example.com -auth admin:token who-am-i

执行后会看到类似:

Authenticated as: admin
Authorities:
  authenticated

这有助于确认认证是否正确,避免因权限不足导致构建命令失败。

以上示例演示了常见的 Jenkins CLI 构建调用格式和参数用法。CLI 工具使用简便灵活,可有效融入自动化脚本和流程中,大幅提高运维效率。

参考文献: Jenkins 官方文档。

示例脚本

#!/bin/bash

# Jenkins 配置
JENKINS_URL="http://jenkins.example.com"
CLI_JAR="./jenkins-cli.jar"
AUTH="admin:your-api-token"
ENV="prod"

# 定义每个 Job 和其对应版本(格式:job_name:version)
JOBS=(
  "deploy-service-a:1.0.0"
  "deploy-service-b:2.3.1"
  "deploy-service-c:0.9.8"
)

# 循环解析 job 和版本,逐个触发构建
for entry in "${JOBS[@]}"; do
  JOB_NAME="${entry%%:*}"
  VERSION="${entry##*:}"

  echo "=== Triggering $JOB_NAME with VERSION=$VERSION ==="
  java -jar "$CLI_JAR" -s "$JENKINS_URL" -auth "$AUTH" build "$JOB_NAME" -s \
    -p ENV="$ENV" -p VERSION="$VERSION"
done


网站公告

今日签到

点亮在社区的每一天
去签到