我试图在GitLab CI中设置构建过程。 现在我正在使用带有Powershell的Windows运行程序,我希望构建过程能够使用构建的版本号自动标记提交。
这样做的主要原因是在Gitlab wiki中启用自动更改日志生成,而不是与通常放在实际项目存储库中的changelog.md混淆。
我已尝试从Powershell脚本中推送标签,但推送永远不会完成并无休止地循环,而且我不清楚为什么会发生这种情况。
该脚本调用以下命令
[System.Console]::WriteLine("Tagging git commit (${env:CI_BUILD_REF} ) with tag (v$Version)");
$gitProcess = Start-Process -FilePath "git" -NoNewWindow -Wait -PassThru -ArgumentList "tag -a v$Version ${env:CI_BUILD_REF} -m ${env:CI_BUILD_REF_NAME}_$Version"
if($gitProcess.ExitCode -ne 0)
{
[System.Console]::WriteLine("Git failed to tag the current build");
exit $gitProcess.ExitCode
}
[System.Console]::WriteLine("Pushing tag");
$gitProcess = Start-Process -FilePath "git" -NoNewWindow -Wait -PassThru -ArgumentList "push origin v$Version"
if($gitProcess.ExitCode -ne 0)
{
[System.Console]::WriteLine("Git could not push tags to GitLab");
exit $gitProcess.ExitCode
}
以下是这些行的输出:
Tagging git commit (9b2feb10340c9f8c86ce7c29460e0bfc5dba6f31 ) with tag (v4.1.295.2274)
Pushing tag
此过程只是挂起,标签永远不会推送或显示在存储库中。
为清楚起见,这是批次等价物:
git tag -a v%版本%% CI_BUILD_REF% git push origin v%Version%
答案 0 :(得分:2)
这里的问题只是权限问题。 Gitlab Windows Runner没有推送权限,只有fetch / clone。 为了解决这个问题,我添加了一个遥控器作为脚本的一部分,该脚本具有用于此特定任务的用户设置。
凭证从密钥文件加载,构建设置为每次构建时克隆存储库。