我目前正在使用gitlab.com(非本地安装)和他们的多用户进行CI集成。这对我的一个项目非常有效,但对另一个项目失败了。
我正在使用2012R2作为MSBuild版本14.0.23107.0的主机。我知道下面的错误显示403这是一个拒绝访问的消息。我的问题是找到要更改的权限设置。
错误讯息:
使用shell运行gitlab-ci-multi-runner 1.5.3(fb49c47) 执行者...在WIN-E0ORPCQUFHS上运行......
获取更改......
HEAD现在位于6a70d96更新转轮文件远程:访问被拒绝致命: 无法访问 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@gitlab.com/##REDACTED##/ADInactiveObjectCleanup.git/': 请求的URL返回错误:403将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)%\MSBuild\14.0\Bin\msbuild.exe" "%Solution%" /p:Configuration=Release'
except:
#- tags
答案 0 :(得分:20)
要解决此问题,我必须将自己添加为项目成员。这是一个私人回购。我不确定这是否会导致跑步者因不同的权限设置而失败,但这很有可能。
gitlab上的这个帮助article概述了这个问题。
有了新的权限模型,有时可能会出现这种情况 构建将失败。这很可能是因为您的项目试图 访问其他项目的来源,你没有适当的 权限。在构建日志中查找有关403或的信息 禁止访问消息。
作为管理员,您可以验证 用户是他们尝试访问的群组或项目的成员 to,并且您可以模拟用户重试失败的构建 为了验证一切都是正确的。
从项目页面单击设置齿轮,然后单击成员。将自己(或用户生成构建)添加为项目的成员。我使用了" Master"角色,但基于this document你可以使用" Reporter"作为最低限度的角色。记者角色是仍然可以访问"拉动项目代码的最小特权。"这删除了我的403错误并允许我继续。
答案 1 :(得分:1)
我也遇到了这个问题
fatal: unable to access 'http://gitlab-ci-token:xxxx.git':The Requested URL returned error:403
ERROR: Job Failed: command terminated with exit code 1
但上述答案的原因似乎不同,因为我的帐户是管理员,ci作业会拉出项目并报告错误403,因为管理员帐户不是项目成员,因此添加为项目成员将不再报告此错误。
答案 2 :(得分:0)
这看起来像你需要添加一个cd
命令来打印你的before_script当前目录。然后去修复权限以访问该文件夹的父级。如果您将gitlab运行器安装到c:\glrunner
,则可能需要c:\glrunner\builds
权限才能修复。
第二个问题是你可能需要通过删除builds文件夹强制一个新的git clone。
您可能希望将gitlab runner服务的登录凭据更改为gitlabuser
,该set
应该是非管理员帐户,其可能比您的gitlab运行者默认使用的LOCAL SYSTEM帐户更少的priveges 。
如果您想知道谁登录,也可以将complex<float>
添加到您的before_script中,然后您将获得环境变量转储。从中您可以看到登录的帐户,USERPROFILE的位置以及其他内容。
答案 3 :(得分:0)
依赖仓库
Job 环境变量 CI_JOB_TOKEN
可用于
验证依赖存储库的任何克隆。例如:
git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com/<user>/<mydependentrepo>.git
它还可以用于系统范围的身份验证
(仅在 docker 容器中执行此操作,它会覆盖 ~/.netrc
):
echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
答案 4 :(得分:-1)
也许您的ISP IP被GitLab阻止了。
在系统上设置美国DNS,然后重试。