繁体   English   中英

gitlab runner 请求的URL 返回error: 403

[英]gitlab runner The requested URL returned error: 403

我目前正在使用 gitlab.com(不是本地安装)和他们的多运行器进行 CI 集成。 这对我的一个项目很有效,但对另一个项目却失败了。

我为我的主机使用 2012R2 和 MSBuild 版本 14.0.23107.0。 我知道下面的错误显示 403,这是一条访问被拒绝的消息。 我的问题是找到要更改的权限设置。

错误信息:

使用 Shell 执行器运行 gitlab-ci-multi-runner 1.5.3 (fb49c47)... 在 WIN-E0ORPCQUFHS 上运行...

正在获取更改...

HEAD 现在位于 6a70d96 update runner file remote: Access denied fatal: unable to access ' https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxxx@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

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

gitlab 上的这篇帮助文章概述了这个问题。

有了新的权限模型,您的构建有时可能会失败。 这很可能是因为您的项目试图访问其他项目的源,而您没有适当的权限。 在构建日志中查找有关 403 或禁止访问消息的信息。

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

从项目页面单击设置齿轮,然后单击成员。 将您自己(或用户生成的构建)添加为项目的成员。 我使用了“Master”角色,但根据本文档,您可能至少可以使用“Reporter”角色。 记者角色是仍然可以访问“拉取项目代码”的最小权限。 这消除了我的 403 错误并允许我继续。

我也遇到了这个问题

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 job拉取项目报错403,因为管理员账号不是项目成员,添加为项目成员不会再报这个错误。

ci_build_permissions

也许你的 ISP ip 被 GitLab 屏蔽了。

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

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

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

您可能希望将 gitlab 运行器服务的登录凭据更改为gitlabuser ,它应该是一个非管理员帐户,该帐户的权限可能少于 gitlab 运行器默认使用的本地系统帐户。

如果您想知道谁登录了,请将set也添加到您的 before_script 中,您将获得环境变量转储。 从那里你可以看到哪个帐户登录了,它的 USERPROFILE 在哪里等等。

依赖存储库

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

我已经多次看到这个问题,这是因为您使用 HTTPS 进行克隆。 -要阅读有关此问题的更多信息,您可以阅读此页面

我遇到了这个问题,所以我切换到 ssh。 go 到 PowerShell 并键入ssh-keygen继续输入,无需输入任何详细信息。 然后 go 到路径 c://User/*

cd .ssh
cat id.rsa.pub

复制密钥并将其粘贴到您的 GitHub 或 GitLab 配置文件中。 并使用 ssh 克隆项目。

我在重置 access_token 时遇到了这个错误,然后我在 .git/config 中设置了用户名和密码,密码是新的 access_token 然后它就可以工作了。

[remote "origin"]
    url = https://username:password@gitlab.example.com/myusername/myproject

来源: https://forum.gitlab.com/t/remote-you-are-not-allowed-to-upload-code-403/60153

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM