如何通过JIRA Rest API获取跨项目迁移的问题键列表(含新旧键)
获取JIRA Cloud迁移问题的新旧键列表(PowerShell+REST API实现)
核心思路
JIRA问题跨项目迁移后,原问题和新问题会自动生成**"is moved to"/"is moved from"**类型的关联链接。我们可以通过JQL筛选出这类带迁移关联的问题,再调用REST API提取对应的新旧问题键。
步骤1:用JQL定位迁移关联的问题
你可以从两个方向构建JQL查询:
- 查原项目(BTM)中所有迁移到SPB的问题:
project = BTM AND issueLinkType = "is moved to" AND linkedIssue in project(SPB) - 查目标项目(SPB)中所有从BTM迁移过来的问题:
project = SPB AND issueLinkType = "is moved from" AND linkedIssue in project(BTM)
步骤2:PowerShell脚本实现数据拉取
以下脚本以查询BTM迁移到SPB的问题为例,直接输出旧问题键(BTM开头)和对应的新问题键(SPB开头),也可导出为CSV文件:
# 配置JIRA Cloud基础信息 $jiraDomain = "your-domain.atlassian.net" $email = "your-admin-email@example.com" $apiToken = "your-api-token" # 从Atlassian账户安全设置中生成专属API Token $sourceProject = "BTM" $targetProject = "SPB" # 构建认证请求头 $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $email, $apiToken))) $headers = @{ "Authorization" = "Basic $base64Auth" "Content-Type" = "application/json" } # 编码JQL查询语句 $jql = "project = $sourceProject AND issueLinkType = `""is moved to"`" AND linkedIssue in project($targetProject)" $encodedJql = [Uri]::EscapeDataString($jql) # 分页拉取所有结果(JIRA API默认每页最多100条) $startAt = 0 $maxResults = 100 $allIssues = @() do { $apiUrl = "https://$jiraDomain/rest/api/3/search?jql=$encodedJql&startAt=$startAt&maxResults=$maxResults&fields=key,issuelinks" $response = Invoke-RestMethod -Uri $apiUrl -Headers $headers -Method Get $allIssues += $response.issues $startAt += $maxResults } while ($response.total -gt $startAt) # 提取并整理新旧问题键数据 $migrationRecords = foreach ($issue in $allIssues) { $oldIssueKey = $issue.key # 筛选"is moved to"类型的链接,提取目标问题键 $newIssueKey = ($issue.fields.issuelinks | Where-Object { $_.type.name -eq "is moved to" }).outwardIssue.key [PSCustomObject]@{ 旧问题键 = $oldIssueKey 新问题键 = $newIssueKey } } # 控制台输出结果(可取消注释导出为CSV) $migrationRecords | Format-Table -AutoSize # $migrationRecords | Export-Csv -Path "JIRA-Migration-List.csv" -Encoding UTF8 -NoTypeInformation
关键注意事项
- API Token生成:登录Atlassian账户后,进入「安全设置」→「API token」生成专属token,禁止使用账户密码直接认证。
- 反向查询调整:如果需要从SPB反向查询BTM的源问题,只需修改JQL为SPB项目的查询语句,脚本中链接类型改为
"is moved from",提取inwardIssue.key即可。 - 权限验证:确保你的管理员账号有权限访问两个项目的问题及关联链接字段,否则会出现数据遗漏或权限报错。
内容的提问来源于stack exchange,提问作者Anik Mallick
相关产品推荐
相关产品推荐

