2

メールで 2 つの JIRA インスタンスを統合したいと考えています。1 つは JIRA 4.2.1 を使用し、もう 1 つは 4.3.3 を使用しています。

1 つのインスタンスには特定のカスタム フィールドがあり、別のインスタンスには特定のカスタム フィールドがあり、両方の JIRA インスタンスが課題の詳細、課題の更新を電子メールで交換する必要があります。つまり、両方が同期している必要があります。

例えば

1) インスタンス 1 で課題が作成されると、メールがトリガーされ、そのメールを使用して、インスタンス 2 がそこで課題を作成します。

2) また、Insance1 の問題の更新がある場合、インスタンス 2 にメールがトリガーされ、インスタンス 2 の同じ問題が更新されます。

晴れますように!!

4

1 に答える 1

0

あなたの意図が正しければ、Jira リモート APIを使用するより簡単な方法があると思います。たとえば、XML-RPCライブラリを使用して、2 つのシステムを比較し、必要に応じて更新する 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 に答える