GitLab Runner请求的URL返回错误:403

qfe3c7zg  于 2022-09-21  发布在  Git
关注(0)|答案(4)|浏览(309)

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

33qvvth11#

为了解决这个问题,我不得不将自己添加为项目成员。这是一次私人回购。我不确定这是否导致跑步者在不同的权限设置下失败,但这是非常有可能的。

GitLab的这个帮助article概述了这个问题。
有了新的权限模型,您的生成可能会失败。这很可能是因为您的项目尝试访问其他项目的源代码,而您没有适当的权限。在生成日志中查找有关403或禁止访问消息的信息。

作为管理员,您可以验证用户是他们尝试访问的组或项目的成员,并且可以模拟用户重试失败的构建,以验证一切都是正确的。

在项目页中,单击设置齿轮,然后单击成员。将您自己(或生成构建的用户)添加为项目的成员。我使用了“Master”角色,但基于this document,您可能至少可以使用“Reporter”角色。报告者角色是仍有权访问“拉入项目代码”的最低权限。这消除了我的403错误,并允许我继续。

nwwlzxa7

nwwlzxa72#

我也遇到过这个问题

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

qyyhg6bp

qyyhg6bp3#

也许你的互联网服务提供商IP被阻止进入GitLab。

在您的系统上设置美国域名,然后重试。

bweufnob

bweufnob4#

这看起来像是您需要添加一个cd命令来将当前目录打印到您的BEFORE_SCRIPT。然后修复访问该文件夹的父文件夹的权限。如果您将GitLab运行器安装到c:\glrunner,则可能需要修复c:\glrunner\builds权限。

第二个问题是,您可能需要通过删除Builds文件夹来强制执行新的git克隆。

您可能希望将GitLab运行者服务的登录凭据更改为gitlabuser,该gitlabuser应该是非管理员帐户,其拥有的权限可能比您的GitLab运行者默认使用的本地系统帐户少。

如果您想知道谁登录了,也可以将set添加到您的BEFORE_SCRIPT中,这样您就会得到一个环境变量DUMP。从中您可以看到哪个帐户已登录,它的USERPROFILE在哪里以及其他信息。

相关问题