如何在groovy中使用JIRA REST客户端JAVA创建特定项目的版本并获取任何版本的详细信息?

如何在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

我正在尝试为特定项目在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.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。