
最近在负责一个线上服务的维护工作,经常会遇到各种告警信息,例如CPU使用率过高、内存溢出等等。每次遇到这些告警,都需要手动登录Jira系统,创建工单,填写标题、描述等信息,非常繁琐。而且,如果同一个告警重复
出现,很容易创建重复的工单,浪费时间。为了解决这个问题,我开始寻找一种自动化创建Jira工单的解决方案,最终发现了reload/jira-security-issue这个库。
Composer在线学习地址:学习地址
reload/jira-security-issue是一个轻量级的PHP库,它可以根据预设的规则,自动创建Jira工单。它的主要特点是简单易用,并且能够避免重复创建工单。该库通过环境变量进行配置,方便在CI/CD系统中使用。
使用composer安装非常简单:
composer require reload/jira-security-issue
在安装完成之后,需要设置以下环境变量:
JIRA_TOKEN: Jira API Token (必须)
JIRA_HOST: Jira实例的地址,例如:
https://your-domain.atlassian.net(必须)
JIRA_USER: 与Jira API Token关联的Jira用户ID,例如:
your-user@example.com(必须)
JIRA_PROJECT: Jira项目的Key,例如:
TEST或
ABC(如果不在代码中设置,则必须)
JIRA_ISSUE_TYPE: Issue类型,例如:
Security,默认为
Bug(可选)
JIRA_PRIORITY: Issue优先级,例如:
Critical(可选)
JIRA_WATCHERS: 需要添加到工单的Jira用户,多个用户用逗号分隔,例如:
user1,user2(可选)
JIRA_RESTRICTED_COMMENT_ROLE: 具有受限可见性的评论的角色,默认为
Developers(可选)
以下是一个简单的例子,展示如何使用
JiraSecurityIssue类创建工单:
setTitle('服务器CPU使用率过高')
->setBody('服务器CPU使用率超过80%,请尽快处理。');
$issue->setKeyLabel('cpu-high-20250726'); // 设置一个唯一的Key,避免重复创建
echo $issue->ensure(); // 创建工单,并输出工单Key通过设置
KeyLabel,可以确保同一个告警只创建一个工单。
ensure()方法会检查是否已经存在具有相同
KeyLabel的工单,如果存在,则不会创建新的工单。
使用reload/jira-security-issue库,可以极大地简化Jira工单的创建流程,提高运维效率,避免重复劳动。特别是在自动化运维场景下,该库可以发挥更大的作用。