我有一个CI管道可能会做一些半变态的事情。我们不要讨论这一部分。
作为CI的一部分,我将生成一个工件(README.md
),我想提交并推回到同一个存储库。由于身份验证错误,仅使用git push origin ...
无法正常工作。
我是否限制使用类似秘密变量和令牌的东西,并添加另一个遥控器以便它可以推送?
答案 0 :(得分:3)
有一些方法可以将ssh标记添加到构建运行时,它可以提交甚至执行推送到源。 我想即使是最近GitLab也添加了一项新功能,为每个版本生成一个唯一的令牌,可以用于同样的目的。
然而,总的来说,我不认为你可以在运行构建的同一个git基础上提交任何东西,因为签出是在一个独立的头模式。这意味着您将无法添加到历史记录中,特别是在远程中。
要考虑的下一个问题是,这意味着如果您能够为构建系统提交,这可能会触发另一个构建并触发循环。
因此,可能要么使用工件系统,要么在构建期间在单独的目录中添加ssh标记和clone / checkout / commit / push。无论如何,这个文档解释了如何添加令牌:https://docs.gitlab.com/ee/ci/ssh_keys/README.html
答案 1 :(得分:1)
Gitlab似乎在获取CI作业的项目后更改了.git文件夹。我不确定它只会改变远程部分。所以我发现只有解决方案是将带有sshkeys的gitlab-runner用户添加到gitlab。在我的工作中,在单独的文件夹中创建git clone
,进行更改,然后提交并推送它。