我目前正在使用gitlab.com(不是本地安装)和他们的多运行器进行CI集成。这在我的一个项目上效果很好,但在另一个项目上却失败了。
我的主机使用2012R2,MSBuild版本为14.0.23107.0。我知道下面的错误显示403,这是一条拒绝访问的消息。我的问题是找到要更改的权限设置。
错误消息:
运行GitLab-ci-MultiRunner 1.5.3(Fb49c47),使用Shell Executor...在Win-E0ORPCQUFHS上运行...
正在获取更改...
Head现在位于6a70d96更新运行器文件远程:访问被拒绝致命:无法访问‘https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.com/##REDACTED##/ADInactiveObjectCleanup.git/’:请求的URL返回错误:403正在 checkout 60ea1410作为生产...
致命:引用不是树:60ea1410dd7586f6ed9535d058f07c5bea2ba9c7错误:生成失败:退出状态128
GitLab-ci.yml文件:
variables:
Solution: ADInactiveObjectCleanup.sln
before_script:
#- "echo off"
#- 'call "%VS120COMNTOOLS%vsvars32.bat"'
## output environment variables (usefull for debugging, propably not what you want to do if your ci server is public)
#- echo.
#- set
#- echo.
stages:
- build
#- test
#- deploy
build:
stage: build
script:
- echo building...
- '"%ProgramFiles(x86)%MSBuild14.0Binmsbuild.exe" "%Solution%" /p:Configuration=Release'
except:
#- tags
4条答案
按热度按时间33qvvth11#
为了解决这个问题,我不得不将自己添加为项目成员。这是一次私人回购。我不确定这是否导致跑步者在不同的权限设置下失败,但这是非常有可能的。
GitLab的这个帮助article概述了这个问题。
有了新的权限模型,您的生成可能会失败。这很可能是因为您的项目尝试访问其他项目的源代码,而您没有适当的权限。在生成日志中查找有关403或禁止访问消息的信息。
作为管理员,您可以验证用户是他们尝试访问的组或项目的成员,并且可以模拟用户重试失败的构建,以验证一切都是正确的。
在项目页中,单击设置齿轮,然后单击成员。将您自己(或生成构建的用户)添加为项目的成员。我使用了“Master”角色,但基于this document,您可能至少可以使用“Reporter”角色。报告者角色是仍有权访问“拉入项目代码”的最低权限。这消除了我的403错误,并允许我继续。
nwwlzxa72#
我也遇到过这个问题
但出现上述答案的原因似乎并不相同,因为我的账号是管理员,ci作业拉项目并报告错误403,因为管理员账号不是项目成员,添加为项目成员不再上报此错误。
ci_build_permissions
qyyhg6bp3#
也许你的互联网服务提供商IP被阻止进入GitLab。
在您的系统上设置美国域名,然后重试。
bweufnob4#
这看起来像是您需要添加一个
cd
命令来将当前目录打印到您的BEFORE_SCRIPT。然后修复访问该文件夹的父文件夹的权限。如果您将GitLab运行器安装到c:\glrunner
,则可能需要修复c:\glrunner\builds
权限。第二个问题是,您可能需要通过删除Builds文件夹来强制执行新的git克隆。
您可能希望将GitLab运行者服务的登录凭据更改为
gitlabuser
,该gitlabuser
应该是非管理员帐户,其拥有的权限可能比您的GitLab运行者默认使用的本地系统帐户少。如果您想知道谁登录了,也可以将
set
添加到您的BEFORE_SCRIPT中,这样您就会得到一个环境变量DUMP。从中您可以看到哪个帐户已登录,它的USERPROFILE在哪里以及其他信息。