2

我想通过电子邮件集成 2 个 JIRA 实例,一个使用 Jira 4.2.1,另一个使用 4.3.3。

一个实例具有某些自定义字段,另一个具有某些自定义字段,两个 JIRA 实例都必须通过电子邮件交换问题详细信息、问题更新。即两者必须同步。

例如

1) 如果在实例 1 中创建问题,则会触发邮件并使用该电子邮件,实例 2 将在那里创建问题。

2) 此外,如果 Insance1 中的问题有更新,则会向实例 2 触发邮件,该邮件将更新实例 2 中的相同问题。

希望它清除!

4

1 回答 1

0

如果我的意图正确,我相信使用Jira 远程 API有一种更简单的方法。例如,您可以使用XML-RPC库轻松编写 Python 脚本,比较两个系统并在需要时更新它们。

您建议的电子邮件方法的问题是您可以轻松地创建一个无限循环的问题创建......

首先,在两个实例中创建一个自定义字段,并将其命名为“同步”。一旦我们同步它们,这将用于标记问题。

接下来,启用 RPC 插件

最后,编写一个脚本,通过 RPC 复制问题,例如:

#!/usr/bin/python

# Sample Python client accessing JIRA via XML-RPC. Methods requiring
# more than basic user-level access are commented out.
#
# Refer to the XML-RPC Javadoc to see what calls are available:
# http://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/com/atlassian/jira/rpc/xmlrpc/XmlRpcService.html

import xmlrpclib

s1 = xmlrpclib.ServerProxy('http://your.first.jira.url/rpc/xmlrpc')
auth1 = s1.jira1.login('user', 'password')

s2 = xmlrpclib.ServerProxy('http://your.second.jira.url/rpc/xmlrpc')
auth2 = s2.jira1.login('user', 'password')

# go trough all issues that appear in the next filter
filter = "10200"
issues = s1.jira1.getIssuesFromFilter(auth1, filter)

for issue in issues:
# read issues: 
for customFields in issue['customFieldValues']:
    if customFields['customfieldId'] == 'customfield_10412': # sync custome field
        # cf exists , dont sync!
        continue
    # no sync field, sync now
    proj = issue['project']
    type = issue['type']
    sum = issue['summary']
    desc = issue['project']
    newissue = s2.jira1.createIssue(auth2, { "project": issue['project'], "type": issue['type'], "summary": issue['summary'], "description": issue['description']})
    print "Created %s/browse/%s" % (s.jira1.getServerInfo(auth)['baseUrl'], newissue['key'])
    # mark issue as synced 
    s.jira1.updateIssue(auth, issue['key'], {"customfield_10412": ["yes"]})

该脚本未经测试,但应该可以工作。您可能需要复制您拥有的其余字段,请查看此链接以获取更多信息。同样,这只是一种同步方式,您也必须以另一种方式同步。

于 2012-06-07T09:05:26.793 回答