jedi58 / jira-integration
Jira集成组件,具有控制台应用程序
Requires
- php: >=5.5.9
- ext-curl: *
- ext-json: *
- symfony/console: *
- symfony/yaml: ^3.2
Requires (Dev)
README
一个用于与Atlassian Jira API交互的PHP组件,Jira API是敏捷团队使用的用于问题跟踪和项目跟踪的软件。
该类背后的想法是,您可以使用它从自己的网站(或网站)中提取信息,或者让您的Web应用程序与之交互。本类开发的Jira API文档为:https://docs.atlassian.com/jira/REST/latest/
独立安装
要安装,您可以使用发行版包或此存储库的克隆。一旦提取或克隆,然后可以运行
./install.sh
这将运行composer install
(如果您没有Composer,将下载Composer)并设置控制台应用程序的正确权限。然后可以使用控制台应用程序与Jira API交互。使用--help
开关将提供可用命令的列表。
使用Composer
如果您想将其作为您自己的项目的一部分使用,只需将其添加到您的composer.json
中,如下所示
composer require jedi58/jira-integration
这将然后将此需求添加到您的composer文件中。
控制台应用程序
常规用法
可以从项目根目录运行控制台应用程序,运行./app/console
。运行此命令将提供可用命令的列表,如issue:create
。如果您经常使用控制台应用程序,那么考虑使用类似ln -s <path-to-project>/app/console /usr/local/bin/jiraticket
的东西可能值得考虑,以便可以从任何位置作为jiraticket
运行。
提示自定义字段
在使用控制台应用程序时,您可以通过更新配置文件jira.yml
以包含Jira指定的自定义字段ID、问题类型(ChoiceQuestion或Question)以及任何帮助提示文本(可选)来提示Jira的自定义字段问题。
custom: customfield_12345: type: ChoiceQuestion help: This is a question that will display allowed values to chose from customfield_67890: type: Question
上述示例显示了两种类型的问题及其配置方式。
用法
- 为Jira API提供认证详情
- 创建一个工单(简单)
- 创建一个工单
- 更新一个工单
- 向工单添加评论
- 检索特定工单
- 检索所有项目的列表
- 检索所有问题类型的列表
- 检索项目的可用配置选项
- 检索自定义字段
- 检索可分配用户的列表
为Jira API提供认证详情
所有Jira API函数都需要进行认证。您的应用程序必须首先使用Authentication
对象提供这些详情。
$auth = Authentication::getInstance( 'https://jira.atlassian.com' 'user','password' );
然后,这些详情将在使用以下任何对象时自动使用。
创建一个工单(简单)
创建一个新的工单并将其分配给指定的项目(以下示例中为DEMO
)。
$case = Issue::getInstance()->simpleCreate( 'DEMO', 'A test ticket', 'There is an issue here - please fix it', 'Bug', array( 'originalEstimate' => '1d 2h 25m' 'remainingEstimate' => '' ) );
这也可以接受可选参数来设置工单类型、时间跟踪以及任何其他以数组形式提供的附加选项。
创建一个工单
这是一个更灵活的创建Jira工单的函数版本。它只接受数组作为参数,并期望您传递所需的所有内容。
$case_id = Issue::getInstance()->create(array('fields' => array( 'project' => array( 'key' => 'DEMO' ), 'summary' => 'A test ticket', 'description' => 'There is an issue here - please fix it', 'issuetype' => array( 'name' => 'Bug' ) )));
与simpleCreate
函数类似,这将返回一个包含已创建工单ID的stClass。
更新一个工单
这是一个更灵活地更新工单属性的方式 - 所有的更改都必须传递到数组中。
$case = Issue::getInstance()->update('DEMO-1234', array('fields' => array( 'summary' => 'This is the new description of the ticket' )));
删除一个工单
如果工单有子任务,则需要将true
传递给此函数,以确认它们应该被删除。
$case = Issue::getInstance()->delete('DEMO-1234');
检索特定工单
这将返回一个包含工单及其所有属性的StdClass
对象。
$ticket = Issue::getInstance()->get('DEMO-123');
向工单添加评论
这将向工单添加一条评论。
Comment::getInstance()->create('DEMO-123', 'This is a comment!', array( 'type' => 'role', 'value' => 'Administrators' ));
返回的结果是一个数组,其中只包含添加评论的时间戳。这个数组在此示例中表示评论的可见性,是可选的。
检索所有项目的列表
$projects = Project::getInstance()->getAll();
检索所有问题类型的列表
$issue_types = Issue::getInstance()->getIssueTypes();
检索项目的可用配置选项
$available_config = Issue::getInstance()->getProjectIssueAvailableConfig('SUP');
检索自定义字段
$custom = Issue::getInstance()->getCustomFieldOption(1);
检索可分配用户的列表
$users = User::getInstance()->getAll();