jenkins curl远程触发构建

本文介绍了如何在Jenkins新版本中使用genericwebhooktrigger进行项目构建。通过GitHubwebhook与remotebuild触发功能的合并,用户可以更方便地设置定时任务,例如使用curl命令远程触发构建,并通过token认证确保安全性。文章提供了详细的步骤演示,包括创建token并使用curl请求触发构建,成功实现了项目的自动化构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

临到要下班了,同事告诉我,在半个小时后,需要做个项目构建,作为一个运维老司机,能用定时任务完成的,干嘛要人肉在这里等?于是想看看能不能通过web请求来完成。

在Jenkins2.375.2版本里,github webhook trigger(后文简称webhook)跟 trigger builds remotely 合并到了一起,变成了一个新的选项,叫做generic webhook trigger。

其实webhook也即是在git仓库在提交代码时,想要让git server 带上很多参数去请求Jenkins server做一些操作(通过在请求时所携带的参数来告知),只不过是场景特殊,我们把这个接口称为webhook。现在合并起来让Jenkins的接口看起来更简洁统一,少了繁杂的称谓别名。

新参数有几个优点:

  1. 在介绍里,给了很多贴心的提示,比如直接告诉用户去哪里检查jsonxpath、xpath、正则表达式,去哪里学习它们的语法。

  1. 支持给予额外的参数,更加自由定义项目

  1. 支持多方式传递参数:POST时请求体里、 Header请求头里,request里。

最常用的,token认证和token credentials认证两种方式。

在demo里,我创建了一个token,然后带上这个token,使用curl请求去远程触发项目构建

curl -vvvv "http://172.16.11.80:8080/generic-webhook-trigger/invoke?token=blYxumn9gnvaaQ7n&TAGNAME=QY_BRANCH_ANDROID&SELECT_OPTION=check_after_deploy"

查看Jenkins构建记录,也可以看出,项目构建已经被触发

至此,新版本Jenkins的web 触发demo 演示

### 通过 curl 命令触发 Jenkins 构建或任务 要在远程环境中使用 `curl` 命令触发 Jenkins 构建或任务,可以通过 Jenkins 提供的 REST API 实现。以下是具体的操作说明和示例代码。 #### 1. 准备工作 在执行构建之前,需确保以下条件已经满足: - **Jenkins URL**: 确定 Jenkins 服务器的具体地址。 - **API Token 或 用户名与密码**: 推荐使用 API Token 替代密码进行身份验证[^2]。 - **Job 名称**: 明确需要触发的任务名称。 - **安全令牌 (Optional)**: 如果启用了 CSRF 防护机制,则还需要提供 crumb 数据来绕过防护措施[^4]。 #### 2. 不带参数的基础构建请求 最简单的场景下,仅需发送 HTTP 请求即可启动目标 job 的新构建实例: ```bash curl -X POST http://your-jenkins-url/job/your-job-name/build \ -u "your-username:your-api-token" ``` 此命令会向指定位置提交一个 POST 请求,并附带上正确的认证信息完成授权访问[^4]。 #### 3. 含有自定义参数的复杂情况处理方式 当某个流水线支持接收外部输入变量时(比如分支号、版本号等),则可通过附加 form-data 参数的形式传递额外数据给服务端解析: ```bash curl -X POST http://your-jenkins-url/job/your-parameterized-job/buildWithParameters \ --user your-username:your-api-token \ --data token=YOUR_TOKEN_NAME \ --data parameter_name=value_for_parameter ``` 这里我们增加了两个新的选项:一个是固定不变的安全校验码;另一个则是实际业务逻辑所需的动态字段值组合[^3]。 #### 4. Windows 平台下的特殊注意事项 对于运行于 Microsoft Windows 上的应用程序来说,默认情况下可能找不到 GNU 版本的 curl 工具集。因此建议显式指明完整路径或者提前将其加入全局环境变量当中以便随时调用: ```cmd C:\Program Files\Git\mingw64\bin\curl.exe -X GET "http://jenkins.example.com/job/my-project/build?token=my-token" --user admin:myapitokenhere ``` 以上就是在不同操作系统之间通用的一套基于标准协议之上的自动化部署解决方案之一[^1]。 --- ### 示例代码:完整的 Curl 调用流程演示 假设存在这样一个需求——每当 GitLab Webhook 抵达之后自动拉取最新代码并重新打包应用程序镜像文件上传至私有仓库保存起来。那么可以按照下面的方式设计整个交互链条: 第一步:监听事件源发出的通知消息; 第二步:提取其中的关键元数据项填充到预设模板里形成最终的有效负载结构体; 第三部:利用上述任意一种形式发起正式的动作指令下达动作直至结束为止。 ```bash #!/bin/bash # Define variables based on incoming webhook payload or other sources. JOB_URL="http://localhost:8080/jenkins/job/deploy-image/" GIT_COMMIT_HASH=$1 BRANCH_NAME=$2 # Trigger the build with parameters using cURL. curl -X POST $JOB_URL/buildWithParameters \ --user my-user:abc123def456ghi789jklmnopqrstuvwxyzABCDEF \ --data token=webhook-trigger \ --data git_commit_hash=${GIT_COMMIT_HASH} \ --data branch_name=${BRANCH_NAME} ``` 这样就可以轻松实现跨平台无缝衔接的目的啦! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值