-
Download and Install PHP Composer.
curl -sS https://getcomposer.org/installer | php
-
Next, run the Composer command to install the latest version of php jira rest client.
php composer.phar require lesstif/php-jira-rest-client dev-master
or add the following to your composer.json file.
{ "require": { "lesstif/php-jira-rest-client": "dev-master" } }
-
Then run Composer's install or update commands to complete installation.
php composer.phar install
-
After installing, you need to require Composer's autoloader:
require 'vendor/autoload.php';
copy .env.example file to .env on your project root.
JIRA_HOST="https://your-jira.host.com"
JIRA_USER="jira-username"
JIRA_PASS="jira-password"
important-note: If you are using previous versions(a prior v1.2), you should move config.jira.json to .env and will edit it.
If you are developing with laravel framework(5.x), you must append above configuration to your application .env file.
- Get Project Info
- Get All Project list
- Get Issue Info
- Create Issue
- Add Attachment
- Update issue
- Add comment
- Perform a transition on an issue
- Perform an advanced search, using the JQL
- Issue time tracking
- Issue worklog
<?php
require 'vendor/autoload.php';
use JiraRestApi\Project\ProjectService;
try {
$proj = new ProjectService();
$p = $proj->get('TEST');
print_r($p);
} catch (JIRAException $e) {
print("Error Occured! " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Project\ProjectService;
try {
$proj = new ProjectService();
$prjs = $proj->getAllProjects();
foreach ($prjs as $p) {
echo sprintf("Project Key:%s, Id:%s, Name:%s, projectCategory: %s\n",
$p->key, $p->id, $p->name, $p->projectCategory['name']
);
}
} catch (JIRAException $e) {
print("Error Occured! " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
try {
$issueService = new IssueService();
$issue = $issueService->get('TEST-867');
print_r($issue->fields);
} catch (JIRAException $e) {
print("Error Occured! " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
try {
$issueField = new IssueField();
$issueField->setProjectKey("TEST")
->setSummary("something's wrong")
->setAssigneeName("lesstif")
->setPriorityName("Critical")
->setIssueType("Bug")
->setDescription("Full description for issue")
->addVersion("1.0.1")
->addVersion("1.0.3");
$issueService = new IssueService();
$ret = $issueService->create($issueField);
//If success, Returns a link to the created issue.
print_r($ret);
} catch (JIRAException $e) {
print("Error Occured! " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
$issueKey = "TEST-879";
try {
$issueService = new IssueService();
// multiple file upload support.
$ret = $issueService->addAttachments($issueKey,
array('screen_capture.png', 'bug-description.pdf', 'README.md'));
print_r($ret);
} catch (JIRAException $e) {
$this->assertTrue(FALSE, "Attach Failed : " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\IssueField;
$issueKey = "TEST-879";
try {
$issueField = new IssueField(true);
$issueField->setAssigneeName("admin")
->setPriorityName("Blocker")
->setIssueType("Task")
->addLabel("test-label-first")
->addLabel("test-label-second")
->addVersion("1.0.1")
->addVersion("1.0.2")
->setDescription("This is a shorthand for a set operation on the summary field")
;
$issueService = new IssueService();
$ret = $issueService->update($issueKey, $issueField);
} catch (JIRAException $e) {
$this->assertTrue(FALSE, "update Failed : " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Comment;
$issueKey = "TEST-879";
try {
$comment = new Comment();
$body = <<<COMMENT
Adds a new comment to an issue.
* Bullet 1
* Bullet 2
** sub Bullet 1
** sub Bullet 2
* Bullet 3
COMMENT;
$comment->setBody($body)
->setVisibility('role', 'Users');
;
$issueService = new IssueService();
$ret = $issueService->addComment($issueKey, $comment);
print_r($ret);
} catch (JIRAException $e) {
$this->assertTrue(FALSE, "add Comment Failed : " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\Transition;
$issueKey = "TEST-879";
try {
$transition = new Transition();
$transition->setTransitionName('Resolved');
$transition->setCommentBody('performing the transition via REST API.');
$issueService = new IssueService();
$issueService->transition($issueKey, $transition);
} catch (JIRAException $e) {
$this->assertTrue(FALSE, "add Comment Failed : " . $e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
$jql = 'project not in (TEST) and assignee = currentUser() and status in (Resolved, closed)';
try {
$issueService = new IssueService();
$ret = $issueService->search($jql);
var_dump($ret);
} catch (JIRAException $e) {
$this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
use JiraRestApi\Issue\TimeTracking;
$issueKey = 'TEST-961';
try {
$issueService = new IssueService();
// get issue's time tracking info
$ret = $issueService->getTimeTracking($this->issueKey);
var_dump($ret);
$timeTracking = new TimeTracking;
$timeTracking->setOriginalEstimate('3w 4d 6h');
$timeTracking->setRemainingEstimate('1w 2d 3h');
// add time tracking
$ret = $issueService->timeTracking($this->issueKey, $timeTracking);
var_dump($ret);
} catch (JIRAException $e) {
$this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}
?>
<?php
require 'vendor/autoload.php';
use JiraRestApi\Issue\IssueService;
$issueKey = 'TEST-961';
try {
$issueService = new IssueService();
// get issue's worklog
$worklogs = $issueService->getWorklog($issueKey)->getWorklogs();
var_dump($worklogs);
} catch (JIRAException $e) {
$this->assertTrue(false, 'testSearch Failed : '.$e->getMessage());
}
?>
Apache V2 License