如何在BitBucket Pipelines中获取上次推送后分支的所有变更文件列表
Bitbucket普通推送场景获取两次推送间所有变更文件解决方案
前置配置
Bitbucket Pipelines默认采用浅克隆,需要调整为完整克隆才能获取完整提交历史,在bitbucket-pipelines.yml中添加如下配置:
clone: depth: full
核心实现逻辑
Bitbucket针对推送触发的流水线,内置了BITBUCKET_PREVIOUS_COMMIT变量,存储推送前当前分支的远端HEAD哈希值,结合当前推送的最新commit哈希BITBUCKET_COMMIT,即可获取两次推送之间所有提交涉及的变更文件。
参考执行脚本
# 兼容分支首次推送的场景(首次推送时BITBUCKET_PREVIOUS_COMMIT为全0哈希) if [[ $BITBUCKET_PREVIOUS_COMMIT == 0000000000000000000000000000000000000000 ]]; then # 首次推送获取全量文件列表 CHANGED_FILES=$(git ls-files | sort -u) else # 对比两次提交获取变更文件,自动去重,添加--diff-filter=d可排除已删除的文件 CHANGED_FILES=$(git diff --name-only --diff-filter=d $BITBUCKET_PREVIOUS_COMMIT $BITBUCKET_COMMIT | sort -u) fi # 传入测试脚本 echo "$CHANGED_FILES" | ./你的测试脚本路径.sh
补充说明
- 该方案仅适用于推送触发的流水线,手动触发的流水线不存在
BITBUCKET_PREVIOUS_COMMIT变量,需额外添加变量存在性校验逻辑 - 如果你的仓库提交量极大,完整克隆耗时过高,可将克隆深度调整为大于单次推送的最大提交数,不需要拉取全量历史
内容的提问来源于stack exchange,提问作者Tyler V.
相关产品推荐
相关产品推荐

