如何在groovy中使用JIRA REST客户端JAVA创建特定项目的版本并获取任何版本的详细信息?
我正在尝试为特定项目在JIRA中创建版本。下面是我的代码。我能够通过JIRA REST客户端JAVA库成功连接JIRA,但现在想实现获取任何版本的信息,只需执行一些其他操作如何在groovy中使用JIRA REST客户端JAVA创建特定项目的版本并获取任何版本的详细信息?,java,groovy,Java,Groovy,我正在尝试为特定项目在JIRA中创建版本。下面是我的代码。我能够通过JIRA REST客户端JAVA库成功连接JIRA,但现在想实现获取任何版本的信息,只需执行一些其他操作 import com.atlassian.jira.rest.client.api.JiraRestClient import com.atlassian.jira.rest.client.api.JiraRestClientFactory //import com.atlassian.jira.rest.client.ap
import com.atlassian.jira.rest.client.api.JiraRestClient
import com.atlassian.jira.rest.client.api.JiraRestClientFactory
//import com.atlassian.jira.rest.client.api.domain.User
import com.atlassian.jira.rest.client.api.domain.Version
//import com.atlassian.jira.rest.client.api.domain.input.VersionInput
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory
import com.atlassian.util.concurrent.Promise
class Jira {
private static final String JIRA_URL = "https://jira.test.com"
private static final String JIRA_ADMIN_USERNAME = "ABCDE"
private static final String JIRA_ADMIN_PASSWORD = "xxxxxx"
static void main(String[] args) throws Exception
{
// Construct the JRJC client
System.out.println(String.format("Logging in to %s with username '%s' and password '%s'", JIRA_URL, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD))
JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory()
URI uri = new URI(JIRA_URL)
JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD)
// client.withCloseable {
// it.projectClient.getProject("ABCD").claim().versions.each { println it }
// }
// Invoke the JRJC Client
//Promise<User> promise = client.getUserClient().getUser(JIRA_ADMIN_USERNAME)
//User user = promise.claim()
Promise<Version> promise = client.getVersionRestClient().getVersion(1234)
//Version version = promise.claim()
// Print the result
System.out.println(String.format("Your user's email address is: %s\r\n", user.getEmailAddress()))
}
}
import com.atlassian.jira.rest.client.api.JiraRestClient
导入com.atlassian.jira.rest.client.api.JiraRestClientFactory
//导入com.atlassian.jira.rest.client.api.domain.User
导入com.atlassian.jira.rest.client.api.domain.Version
//导入com.atlassian.jira.rest.client.api.domain.input.VersionInput
导入com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory
导入com.atlassian.util.concurrent.Promise
吉拉班{
私有静态最终字符串JIRA_URL=”https://jira.test.com"
私有静态最终字符串JIRA_ADMIN_USERNAME=“ABCDE”
私有静态最终字符串JIRA\u ADMIN\u PASSWORD=“xxxxxx”
静态void main(字符串[]args)引发异常
{
//构建JRJC客户端
System.out.println(String.format(“使用用户名'%s'和密码'%s'登录到%s,JIRA_URL,JIRA_ADMIN_用户名,JIRA_ADMIN_密码))
JiraRestClientFactory=new AsynchronousJiraRestClientFactory()
URI=新URI(JIRA_URL)
JiraRestClient client=factory.createWithBasicHttpAuthentication(uri、JIRA_ADMIN_用户名、JIRA_ADMIN_密码)
//可关闭的客户端{
//it.projectClient.getProject(“ABCD”).claim().versions.each{println it}
// }
//调用JRJC客户端
//Promise Promise=client.getUserClient().getUser(JIRA\u ADMIN\u用户名)
//User=promise.claim()
Promise Promise=client.getVersionRestClient().getVersion(1234)
//Version=promise.claim()
//打印结果
System.out.println(String.format(“您用户的电子邮件地址是:%s\r\n”,user.getEmailAddress()))
}
}
我能够完成一些任务,比如获取任何用户ID的电子邮件地址
package com.temp.jira
import com.atlassian.jira.rest.client.api.JiraRestClient
import com.atlassian.jira.rest.client.api.JiraRestClientFactory
import com.atlassian.jira.rest.client.api.domain.BasicProject
import com.atlassian.jira.rest.client.api.domain.Issue
import com.atlassian.jira.rest.client.api.domain.SearchResult
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory
import com.atlassian.util.concurrent.Promise
/**
* Created on 7/21/2017.
*/
class Test {
private static final String JIRA_URL = "https://jira.test.com"
private static final String JIRA_ADMIN_USERNAME = "ABCDEF"
private static final String JIRA_ADMIN_PASSWORD = "*****"
private static final String JIRA_PROJECT = "ABCD"
static void main(String[] args) throws Exception
{
// Construct the JRJC client
System.out.println(String.format("Logging in to %s with username '%s' and password '%s'", JIRA_URL, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD))
JiraRestClientFactory factory = new AsynchronousJiraRestClientFactory()
URI uri = new URI(JIRA_URL)
JiraRestClient client = factory.createWithBasicHttpAuthentication(uri, JIRA_ADMIN_USERNAME, JIRA_ADMIN_PASSWORD)
for (BasicProject project : client.getProjectClient().getProject(JIRA_PROJECT).claim()) {
System.out.println(project.getKey() + ": " + project.getName())
}
Promise<SearchResult> searchJqlPromise = client.getSearchClient().searchJql("project = $JIRA_PROJECT AND status in (Closed, Completed, Resolved) ORDER BY assignee, resolutiondate");
for (Issue issue : searchJqlPromise.claim().getIssues()) {
System.out.println(issue.getId())
}
// Done
System.out.println("Example complete. Now exiting.")
System.exit(0)
}
}
package com.temp.jira
导入com.atlassian.jira.rest.client.api.JiraRestClient
导入com.atlassian.jira.rest.client.api.JiraRestClientFactory
导入com.atlassian.jira.rest.client.api.domain.BasicProject
导入com.atlassian.jira.rest.client.api.domain.Issue
导入com.atlassian.jira.rest.client.api.domain.SearchResult
导入com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory
导入com.atlassian.util.concurrent.Promise
/**
*创建于2017年7月21日。
*/
课堂测试{
私有静态最终字符串JIRA_URL=”https://jira.test.com"
私有静态最终字符串JIRA\u ADMIN\u USERNAME=“ABCDEF”
私有静态最终字符串JIRA_ADMIN_PASSWORD=“*****”
私有静态最终字符串JIRA_PROJECT=“ABCD”
静态void main(字符串[]args)引发异常
{
//构建JRJC客户端
System.out.println(String.format(“使用用户名'%s'和密码'%s'登录到%s,JIRA_URL,JIRA_ADMIN_用户名,JIRA_ADMIN_密码))
JiraRestClientFactory=new AsynchronousJiraRestClientFactory()
URI=新URI(JIRA_URL)
JiraRestClient client=factory.createWithBasicHttpAuthentication(uri、JIRA_ADMIN_用户名、JIRA_ADMIN_密码)
对于(基本项目:client.getProjectClient().getProject(JIRA_项目).claim()){
System.out.println(project.getKey()+“:”+project.getName())
}
Promise searchJqlPromise=client.getSearchClient().searchJql(“项目=$JIRA_项目和受让人的(已结束、完成、已解决)订单状态,resolutiondate”);
针对(问题:searchJqlPromise.claim().getIssues()){
System.out.println(issue.getId())
}
//完成
System.out.println(“示例完成,现在退出”)
系统退出(0)
}
}
坚持使用jira rest客户端api,因为您拥有由fJira创建者提供的类型化访问权限
摘自我的Groovy工作代码:
/**
* Retrieves the latest unreleased version for the given project.
* @param projectId Given project
* @return latest unreleased version
*/
private Version getVersion(String projectId)
{
def project = restClient.projectClient.getProject(projectId).claim()
def unreleasedVersions = project
.getVersions()
.findAll { version ->
version.released == false
}
if (unreleasedVersions.size() != 1) {
throw new RuntimeException('There are zero or more unreleased versions.')
}
unreleasedVersions.get(0)
}
/**
* Creates a new, undeployed version for the given project.
* @param projectId Given project
*/
private void createVersion(String projectId)
{
def versionInputBuilder = new VersionInputBuilder(projectId)
versionInputBuilder.released = false
versionInputBuilder.name = incrementVersion(capturedVersion.name)
versionInputBuilder.description = 'Bugfixing'
versionInputBuilder.startDate = DateTime.now()
def promise = restClient.versionRestClient.createVersion(versionInputBuilder.build())
trackCompletion(promise)
}
我的代码中没有得到某个版本,但是当您将版本的数据类型更改为字符串时,您的注释代码应该可以工作。我以下面的方式创建了脚本,并且能够创建、更新和删除版本
import com.atlassian.jira.rest.client.api.JiraRestClient
import com.atlassian.jira.rest.client.api.VersionRestClient
import com.atlassian.jira.rest.client.api.domain.Version
import com.atlassian.jira.rest.client.api.domain.input.VersionInput
import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory
import com.atlassian.util.concurrent.Promise
import org.codehaus.jettison.json.JSONException
import org.joda.time.DateTime
import java.util.concurrent.ExecutionException
class VersionClient {
private static final String JIRA_URL = "https://jira.test.com"
private static final String JIRA_ADMIN_USERNAME = "ABCDEF"
private static final String JIRA_ADMIN_PASSWORD = "******"
private static final String JIRA_PROJECT = "TEST"
static void main(String[] args)
throws URISyntaxException, InterruptedException, ExecutionException, JSONException {
// Initialize REST Client
final AsynchronousJiraRestClientFactory factory = new AsynchronousJiraRestClientFactory()
final URI uri = new URI("$JIRA_URL")
final JiraRestClient jiraRestClient = factory.createWithBasicHttpAuthentication(uri, "$JIRA_ADMIN_USERNAME", "$JIRA_ADMIN_PASSWORD")
// Get specific client instances
VersionRestClient versionClient = jiraRestClient.getVersionRestClient()
// Create Version
VersionInput versionInput = new VersionInput("$JIRA_PROJECT", "TEST 1.2.8", "Test Version", new DateTime(), false, false)
Promise<Version> version = versionClient.createVersion(versionInput)
Version versionObj = version.get()
System.out.println("Created Version:" + versionObj.getName())
// Invoke the JRJC Client
Promise<Version> promise = versionClient.getVersion(versionObj.getSelf())
Version versionid = promise.claim()
// Print the result
System.out.println(String.format("Version id is: %s\r\n", versionid.getId() + " and URI:" + versionid.getSelf()))
// Release Version using Update
versionClient.updateVersion(versionid.getSelf(),new VersionInput("$JIRA_PROJECT", "TEST 1.2.8", "Test Version", new DateTime(), false, true))
// Delete the Version
versionClient.removeVersion(versionid.getSelf(), null, null).claim()
System.out.println("Deleted Version")
}
}
import com.atlassian.jira.rest.client.api.JiraRestClient
导入com.atlassian.jira.rest.client.api.VersionRestClient
导入com.atlassian.jira.rest.client.api.domain.Version
导入com.atlassian.jira.rest.client.api.domain.input.VersionInput
导入com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory
导入com.atlassian.util.concurrent.Promise
导入org.codehaus.jettison.json.JSONException
导入org.joda.time.DateTime
导入java.util.concurrent.ExecutionException
类版本客户端{
私有静态最终字符串JIRA_URL=”https://jira.test.com"
私有静态最终字符串JIRA\u ADMIN\u USERNAME=“ABCDEF”
私有静态最终字符串JIRA_ADMIN_PASSWORD=“********”
私有静态最终字符串JIRA_PROJECT=“TEST”
静态void main(字符串[]参数)
抛出URISyntaxException、InterruptedException、ExecutionException、JSONException{
//初始化REST客户端
最终AsynchronousJiraRestClientFactory=新的AsynchronousJiraRestClientFactory()
最终URI=新URI($JIRA_URL)
final JiraRestClient JiraRestClient=factory.createWithBasicHttpAuthentication(uri,“$JIRA\u ADMIN\u USERNAME”,“$JIRA\u ADMIN\u PASSWORD”)
//获取特定的客户端实例
VersionRestClient versionClient=jiraRestClient.getVersionRestClient()
//创建版本
VersionInput VersionInput=新版本输入($JIRA_项目、测试1.2.8、测试版本、新日期时间()、false、false)
承诺版本=versionClient.createVersion(versionInput)
Version versionObj=Version.get()
System.out.println(“创建的版本:”+versionObj。