如何在JIRA问题状态更改时使GitLab CI重新构建

44次阅读
没有评论

问题描述

想要在JIRA的问题转换(transition)时,通过GitLab CI启动构建。
用户在网上搜索后没有找到直接的解决方法。他找到了一些让GitLab告诉JIRA该做什么的方法,但似乎没有找到相反方向的解决方案。
用户有一个约束条件,即必须根据以下规则部署到服务器:
– 当JIRA问题的状态为QA时,部署到…test.example.com
– 当JIRA问题的状态为Stage时,部署到…stage.example.com
– 当JIRA问题的状态为Beta时,部署到…beta.example.com
– 当JIRA问题的状态为Done时,部署到….example.com
用户在JIRA中为问题添加了一个”Merge Request”字段,因此他们知道”问题的分支”(以及”分支的问题”)。
为了满足这个约束条件,用户目前使用一个Python脚本来每小时进行QA、Stage和Beta的部署。但是这个脚本有太多的顶层循环和功能(因为它很旧了)。
用户希望能够让JIRA通知GitLab CI一个问题已经准备好重新构建,然后请求GitLab CI重新构建相关的Merge Request。
在JIRA的工作流状态转换中,可以”触发Webhook”,但似乎我们需要提供自己的REST API供JIRA发送消息,并且该API可以通知GitLab CI。这是一个新的内部应用程序,需要维护和增加功能,因此我们想知道是否有其他解决方案。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

使用GitLab CI的Webhook功能,可以实现JIRA问题状态更改时触发GitLab CI构建的需求。
以下是具体步骤:
1. 在GitLab CI中创建一个Webhook,获取Webhook的URL。
2. 在JIRA中找到相应的问题,进入问题的”Transition”页面。
3. 在”Transition”页面中,选择需要触发构建的状态转换。
4. 在状态转换的配置页面中,选择”Trigger a Webhook”选项。
5. 在”Webhook URL”字段中,粘贴之前在GitLab CI中创建的Webhook的URL。
6. 保存并应用更改。
这样,当JIRA问题的状态转换为所选状态时,GitLab CI将会收到Webhook请求,从而触发相应的构建。

方案2

使用数据库触发器可能会增加复杂性,并且需要确保JIRA和GitLab CI之间的依赖关系正确设置。
另一种方法是使用数据库触发器来实现JIRA问题状态更改时触发GitLab CI构建的需求。以下是一些数据库的示例:

MySQL

在MySQL和MariaDB中,可以使用mysql-udf-http来实现。具体步骤如下:
1. 安装mysql-udf-http插件。
2. 创建一个触发器,在触发器中使用mysql-udf-http发送HTTP请求到GitLab CI的API来触发构建。

PostgreSQL

在PostgreSQL中,可以编写一个存储过程,并使用plperlu和REST::Client来发送HTTP请求到GitLab CI的API来触发构建。

Oracle

在Oracle数据库中,可以使用UTL_HTTP包来发送HTTP请求到GitLab CI的API来触发构建。
请注意,在每种情况下,您需要根据您的具体情况调整触发器或存储过程,以确保在正确的状态转换和项目中触发构建。

方案3

使用JIRA的REST API来触发GitLab CI构建可能需要额外的开发和维护工作。
另一种方法是使用JIRA的REST API来触发GitLab CI构建。以下是一些步骤:
1. 创建一个新的内部应用程序,该应用程序将作为JIRA的插件或扩展来使用。
2. 在应用程序中实现一个REST API端点,该端点接收JIRA问题状态更改的通知,并向GitLab CI的API发送请求来触发构建。
3. 在JIRA中配置状态转换,使其在状态更改时调用应用程序的REST API端点。
请注意,这种方法需要额外的开发和维护工作,因为您需要创建一个新的应用程序,并确保它与JIRA和GitLab CI的API正确交互。

方案4

使用第三方集成工具可能是一个更简单和可靠的解决方案。
另一种方法是使用第三方集成工具来实现JIRA问题状态更改时触发GitLab CI构建的需求。这些工具通常提供了易于配置和使用的界面,可以帮助您快速设置集成。
以下是一些常用的第三方集成工具:
– Zapier
– Integromat
– Microsoft Power Automate (以前的Microsoft Flow)
这些工具通常提供了与JIRA和GitLab CI的集成模板,您只需按照指导进行配置即可实现所需的功能。
请注意,使用第三方集成工具可能需要额外的订阅或许可证,并且某些功能可能需要付费。

总结

在本文中,我们介绍了几种实现JIRA问题状态更改时触发GitLab CI构建的解决方案。您可以根据您的具体需求和环境选择适合您的方法。请注意,每种方法都有其优缺点和适用条件,您需要根据您的具体情况进行评估和选择。

正文完