运行 local GitLab CI with shell executor and flag --user $USER for gitlab-runner

Running local GitLab CI with shell executor and flag --user $USER for gitlab-runner

我尝试在本地 GitLab 安装上设置 CI 环境。 我正在测试需要在普通用户($USER 的值)环境中 运行 的基本 shell 命令。 默认情况下,gitlab-运行ner 服务配置为 --user gitlab-runner。 所以首先我按照 提供的答案分配另一个用户。 这似乎有效,因为 ps aux | grep runner 的输出符合预期,我从 https://gitlab.com/gitlab-org/gitlab-runner/-/issues/4559 中描述的 .bash_logout 中遇到了 clear_console 错误。 注释掉 .bash_logout 的内容后,我现在得到以下错误。

Running with gitlab-runner 14.3.2 (e0218c92)
...
Getting source from Git repository
00:00
Fetching changes with git depth set to 50...
error: could not lock config file /home/gitlab-runner/builds/y762gpjf/0/root/test.tmp/git-template/config: Permission denied

这发生在 .gitlab-ci.yml 的任何命令被解释之前,所以我被困在这里。 此外,似乎 gitlab-运行ner 绝对不是设计为 运行 与普通用户帐户。这是一个合理的假设吗?

编辑:根据答案实施的解决方案

确实,新用户无法访问 运行ner 的工作目录。 所以在安装 运行ner 之前我 运行

sudo usermod -aG gitlab-runner $USER
sudo chmod g+wx /home/gitlab-runner/

然后

sudo gitlab-runner install --user=$USER --working-directory=/home/gitlab-runner

正如 Davide 在评论中提到的,当您更新 gitlab-runner 的用户时,您还需要更新其工作目录以确保它对该目录具有权限。或者,您可以授予新用户访问 /home/gitlab-runner 的权限,这是您的选择。要使用不同的用户和工作目录安装 gitlab-runner,命令是:gitlab-runner install --user=my_user --working-directory=/home/my_user (reference)