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

问题描述 投票:0回答:8

我目前正在使用 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:[电子邮件受保护]/##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
git msbuild gitlab gitlab-ci gitlab-ci-runner
8个回答
47
投票

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

gitlab 的

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

随着新的权限模型的到位,有时您的 构建将会失败。这很可能是因为您的项目试图 访问其他项目的源代码,并且您没有合适的资源 权限。在构建日志中查找有关 403 或 禁止访问消息。

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

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


6
投票

我也遇到这个问题了

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


2
投票

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

[remote "origin"]
    url = https://username:[email protected]/myusername/myproject

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


0
投票

这看起来您需要添加一个

cd
命令来将当前目录打印到 before_script 中。然后修复访问该文件夹父级的权限。如果您将 gitlab runner 安装到
c:\glrunner
,您可能需要修复
c:\glrunner\builds
权限。

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

您可能需要将 gitlab 运行程序服务的登录凭据更改为

gitlabuser
,该帐户应该是非管理员帐户,该帐户的权限可能比 gitlab 运行程序默认使用的本地系统帐户少。

如果您想知道谁登录了,请将

set
添加到您的 before_script 中,您将获得环境变量转储。从那里你可以看到哪个帐户登录了,它的用户配置文件在哪里以及其他信息。


0
投票

也许您的 ISP IP 被 GitLab 屏蔽了。

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


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

0
投票

我已经见过这个问题好几次了,这是因为你使用 HTTPS 进行克隆。 - 要了解有关此问题的更多信息,您可以阅读此page

我遇到过这个问题,所以我改用了 ssh。 转到 PowerShell 然后输入

ssh-keygen
继续输入,无需输入任何详细信息。 然后转到路径 c://User/*

cd .ssh
cat id.rsa.pub

复制密钥并将其粘贴到您的 GitHub 或 GitLab 个人资料中。 并使用 ssh 克隆项目。


0
投票

确保您的 CI_JOB_TOKEN 被允许访问目标存储库。

在您尝试克隆的存储库中,转到

Settings > CI/CD > Token Access
并添加尝试克隆它的存储库。那么它应该可以正常工作。

您可以在这里阅读更多相关信息: https://docs.gitlab.com/ee/ci/jobs/ci_job_token.html#allow-access-to-your-project-with-a-job-token

© www.soinside.com 2019 - 2024. All rights reserved.