我的gitlab ci中有一个合并作业,它在每个午夜合并两个分支。现在,如果一个分支中发生了更改,从而触发了部署作业,则此操作运行良好。但当没有变化的时候就不会了。所以每当它在ci作业中运行git-push时,我都会得到状态代码0。我需要的是,如果更改被推送,则返回状态代码0,如果"是",则返回staus代码1;一切都是最新的"。
我怎样才能做到这一点?有没有办法使用shell脚本或python?
基本上,我希望合并/推送作业失败,因为没有任何更改,所以on_ffailure作业可以触发。
谢谢。
如果要将sourceBranch
合并到targetBranch
中,则在进行合并之前,可以检查sourceBranch
领先于targetBranch
的提交数量,并且"出口1";如果该数字是0。(我想你那时甚至不需要尝试推送。(
例如,在Bash中,它可能看起来像:
# Check if there is anything to merge
NumCommitsAhead=$(git log targetBranch..sourceBranch --oneline | wc -l)
if [ $NumCommitsAhead -eq 0 ]; then
echo "sourceBranch has no new commits to merge. Exiting."
exit 1
fi
您可以捕获git push
命令的输出并对其进行解析,以查看是否存在字符串"一切都是最新的";。