gitlab runner请求的URL返回错误:403

时间:2016-10-12 19:18:53

标签: git msbuild gitlab gitlab-ci gitlab-ci-runner

我目前正在使用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

5 个答案:

答案 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,因为管理员帐户不是项目成员,因此添加为项目成员将不再报告此错误。

ci_build_permissions

答案 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,然后重试。