在我们的Jenkins任务中,我们依赖于Bitbucket的一个实现细节,即拉请求合并提交,它可以使用pull-requests/*/merge访问。
Bitbucket有放弃对3路合并的支持,因此我们无法运行:
if (isPR(config.BRANCH)) {
echo 'In PR type commit'
PR_ID=parsePRId(config.BRANCH)
TARGET_COMMIT="pull-requests/$PR_ID/merge"
FROM_COMMIT="pull-requests/$PR_ID/from"
} else {
echo 'Non PR type commit'
TARGET_COMMIT=config.BRANCH
FROM_COMMIT=config.BRANCH
}
// Fetch hash of from commit for marking build status
sh "git fetch origin $FROM_COMMIT"
result.branch = config.BRANCH
result.fromCommitId = sh(returnStdout: true, script: "git rev-parse FETCH_HEAD").trim()
result.fromCommitIdShort = sh(returnStdout: true, script: "git rev-parse --short FETCH_HEAD").trim()
try {
// Checkout target commit
sh """
git fetch origin $TARGET_COMMIT && \
git checkout -f FETCH_HEAD
"""
result.targetCommitId = sh(returnStdout: true, script: "git rev-parse FETCH_HEAD").trim();
result.targetCommitIdShort = sh(returnStdout: true, script: "git rev-parse --short FETCH_HEAD").trim();
} catch (Exception err) {
result.targetCommitId = null
result.targetCommitIdShort = null
}除了这样做,还有其他选择吗?最终目标是签出在monorepo中构建/部署微服务的拉请求。
发布于 2022-11-01 08:13:29
我通过创建一个沉重的结帐来解决这个问题。这还需要更好的测试。
if (isPR(config.BRANCH)) {
echo 'In PR type commit'
PR_ID=parsePRId(config.BRANCH)
FROM_COMMIT="pull-requests/$PR_ID/from"
/* this is needed because bitbucket dropped support for PR merge refs
more info in https://jira.dna.fi/browse/CXA-1509
*/
sh """
git checkout origin/master && \
git checkout -b interim && \
git merge "origin/${env.CHANGE_BRANCH}"
"""
def interimCommit = sh(returnStdout: true, script: "git rev-parse HEAD").trim();
TARGET_COMMIT = interimCommit
} https://stackoverflow.com/questions/74222246
复制相似问题