我对gitlab,gitlab-ci和fastlane有问题。在快车道中,我正在使用:
def increment_build_and_commit
incrementBuildNumber()
commit_version_bump(message: 'build number bump [skip ci]')
push_to_git_remote(
remote: 'origin_rw',
remote_branch: ENV['CI_COMMIT_BRANCH']
)
end
所以我想增加构建号并提交。因此,它可以完成以下工作:
incrementBuildNumber(),
commit_version_bump(message: 'build number bump [skip ci]')
但是在运行时,它会失败push_to_git_remote
[!命令 'git push origin_rw HEAD:HEAD 的退出状态 --tags --设置上游"是 1 而不是 0。 错误:您提供的目的地不是完整的引用名称(即以"refs/"开头(。我们 试图猜测你的意思:
- 寻找与远程侧的"HEAD"匹配的参考。
- 检查被推送的('HEAD'(是否是"refs/{heads,tags}/"中的引用。如果是这样,我们在远程端添加一个相应的
refs/{heads,tags}/前缀。 两者都没有用,所以我们 放弃了。您必须完全限定引用。 提示:部分 Refspec 是一个提交对象。 提示:你的意思是创建一个新分支吗 通过推动提示:"HEAD:refs/heads/HEAD"? 错误:推送失败 一些参考'**********.git'
你们中的一些人有任何线索该怎么做以及如何解决这个问题?因为我将成为谷歌机器,但不幸的是找不到解决方案。提前感谢!!
发生这种情况是因为 gitlab-ci 签出 git commit 而不是 git 分支,并且您进入分离的 HEAD 状态。
有几种方法可以解决这个问题:
1(使用 CI 提供的值。对于 GitLab,我建议使用CI_PIPELINE_IID
。缺点是您无法控制它,如果您将项目迁移到其他存储库,它将再次从 1 开始。
2(在提交之前签出 git 分支。缺点是,如果其他开发人员推送到同一分支,您的管道将继续使用错误的源代码。
3(手动提交版本号碰撞。