我知道我可以将特定步骤限制为";条件:变更集:includePaths:"这不是我想做的。
我知道我可以使用git diff
在最后一次提交中获得修改过的文件列表。不幸的是,这还不够。
我想做的是获得自上次推送以来在此分支中修改的所有文件的列表。例如,假设您执行以下操作:
- 创建一个分支
- 提交A
- 推动
- 提交B
- 提交C
- 提交D
- 推动
我想要一个在所有B、C和D中修改的文件列表,这样我就可以将它们传递给我的测试脚本,并评估自上次管道运行以来修改的所有文件。
使用拉取请求,我想我可以通过区分BITBUCKET_COMMIT
和BITBUCKET_PR_DESTINATION_BRANCH
来实现这一点。但对于我想在任何时候推送提交时简单运行的管道步骤,我不知道如何获得我想要的变更集。
对于在2023年或之后寻找这个问题答案的人,我们可以使用Bitbucket API在管道构建中的pull请求中获得更新对象的列表,例如:
# Get the PR diffstat URL
curl --request GET --url "https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}/pullrequests/{pull_request_id}" --header "Authorization: Bearer <access_token>" --header "Accept: application/json" -o response.json
DIFFSTAT_URL=$(jq -r .links.diffstat.href response.json)
curl --request GET --url "${DIFFSTAT_URL}" --header "Authorization:Bearer <access_token>" --header "Accept: application/json" -o diffstat.json
jq -r .values[].new.path diffstat.json > changelog.txt
来源:https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pullrequests