Jira+Jenkins集成,实现任务状态改变自动触发发布

本文介绍如何通过Jira的网络钩子功能和Jenkins中的Jira插件实现Jira任务变更通知到Jenkins的功能,并配置Jenkins以响应JIRA中的任务状态变化或评论更新,从而触发构建。

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


1Jira任务改变要通知到Jenkins

这个功能是通过Jira的网络钩子功能和Jenkins中的Jira插件实现的,具体配置如下:

①  Jenkins中安装JIRA Trigger Plugin插件,然后配置Jira的地址和登录信息


 

②  Jira中创建网络钩子,其中url是:http://你的Jenkins地址/jira-trigger-webhook-receiver/

③  这样当Jira中任务发生变化后,就会通过网络钩子通知到Jenkins

 

 

 

2Jenkins中配置触发构建的条件

安装好JIRA Trigger Plugin插件后,在触发构建选项中就能看到两个新的触发条件:

§ Build when a comment is added to JIRA

§ Build when an issue is updated inJIRA

通过在JIRA任务单中添加备注或者通过检测JIRA任务单的状态变化,来触发Jenkins构建,这里我的第一个为例子进行了配置:

 

这里的JIRA_ISSUE_KEY变量,可以在后面的构建shell中使用,通过该变量获取到Jirakey

 

### 如何通过 JIRA 触发 Jenkins 的 API 为了实现 JIRA 触发 Jenkins 的功能,可以通过 Webhooks 或者直接调用 Jenkins 提供的 RESTful API 来完成。以下是详细的说明: #### 1. 配置 JIRA Webhook Webhook 是一种轻量级的方式,允许外部服务在特定事件发生时接收 HTTP POST 请求。JIRA 可以配置 Webhook,在某些事件(如问题创建、更新或关闭)发生时向指定的目标发送通知。 - **步骤**: - 登录到 JIRA 管理后台。 - 转至 `Settings` -> `System` -> `WebHooks`。 - 添加一个新的 Webhook 并设置目标 URL 为 Jenkins 接收请求的服务地址[^4]。 - 设置触发条件,例如当某个问题的状态发生变化时触发。 #### 2. Jenkins 插件支持 为了让 Jenkins 支持来自 JIRA触发器,需要安装相应的插件来处理这些请求。 - **所需插件**: - **Jira Plugin**: 主要用于基本的 JIRA-Jenkins 集成功能[^3]。 - **Jira Trigger Plugin**: 特定于监听 JIRA 发送的通知并触发构建任务[^4]。 - **配置方法**: - 在 Jenkins 后台导航到 `Manage Jenkins` -> `Configure System`。 - 查找与 JIRA 相关的部分,输入 JIRA 实例的具体信息(URL, 用户名, 密码等)[^2]。 - 对应的任务中启用 JIRA Triggers 功能,并定义哪些类型的事件会引发该任务执行。 #### 3. 使用 Jenkins API 手动集成 如果不想依赖额外的插件,则可以直接利用 Jenkins 的远程访问 API 来手动实现这一需求。 - **API 访问方式**: - 构造一个指向 `/job/{job_name}/build` 的 POST 请求即可触发起对应的 Job[^1]。 ```bash curl -X POST http://<jenkins_url>/job/<job_name>/build \ --user <username>:<api_token> \ --header "Content-Type: application/json" ``` 其中 `<username>` 和 `<api_token>` 替换为你自己的认证凭证;而 `<job_name>` 则替换为目标项目的名称。 - **安全注意事项**: - 应确保只有授权的应用能够访问此接口以防滥用。 - 如果可能的话,考虑使用更细粒度的安全策略比如 CRUMB 防御机制[^5]。 #### 示例代码片段展示如何从 JIRA 中调用 Jenkins Build: ```python import requests def trigger_jenkins_job(jenkins_url, job_name, username, token): url = f"{jenkins_url}/job/{job_name}/build" auth = (username, token) headers = {'Content-Type': 'application/x-www-form-urlencoded'} response = requests.post(url, data='', auth=auth, headers=headers) if response.status_code != 201: raise Exception(f"Failed to trigger build {response.text}") trigger_jenkins_job('http://your-jenkins-server', 'example-job', 'admin', 'your-api-token') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值