42

目前,当我在 GitlabCI 中开始构建时,它在 gitlab-runner 用户下运行。我想把它改成公司的内部用户。我没有找到解决该问题的 /etc/gitlab-runner/config.toml 的任何参数。

我目前的配置:

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "shell"
4

7 回答 7

78

运行ps aux可以看到:

/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner

服务正在使用选项运行--user

所以让我们改变一下,这取决于发行版。你正在运行它。如果是systemd,有一个文件:

/etc/systemd/system/gitlab-runner.service:

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/gitlab-ci-multi-runner "run" "--working-directory" "/home/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--se

Bingo,让我们现在更改此文件:

gitlab-runner uninstall

gitlab-runner install --working-directory /home/ubuntu --user ubuntu

重新启动机器或重新加载服务(即systemctl daemon-reload),等等!

于 2016-11-20T11:04:30.283 回答
12

请注意,使用特定用户 (--user) 安装时,无论何时更新,它都会恢复为原始 systemd 脚本,因此,恢复为使用 gitlab-runner 用户。

为了使用户在更新时保持更改,使用 systemd 覆盖(centos7)您可以使用这些步骤(假设服务位于/etc/systemd/system/gitlab-runner.service):

  1. 创建一个/etc/systemd/system/gitlab-runner.service.d目录。
  2. 创建一个/etc/systemd/system/gitlab-runner.service.d/exec_start.conf文件,内容为:

    [Service]
    ExecStart=
    ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/home/ubuntu" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "ubuntu"
    
  3. 执行systemctl daemon-reload


现在要检查这是否有效,您可以这样做:

  1. 重新安装 GitLab Runner 包gitlab-runner uninstall,然后gitlab-runner install

  2. 检查ps aux | grep gitlab并确认正在使用正确的用户

来源:https ://gitlab.com/gitlab-org/gitlab-runner/issues/3675

于 2019-02-22T17:06:57.390 回答
5

注册后(是的gitlab-runner,它将安装在用户gitlab-runner和工作目录下/home/gitlab-runner)您可以执行以下更改跑步者的用户

gitlab-runner uninstall
gitlab-runner install --working-directory <existing-path> --user <any-existing-user>

# eg: gitlab-runner install --working-directory /home/ec2-user --user ec2-user

然后重启服务

service gitlab-runner restart

注意:您不需要为此进行编辑/etc/systemd/system/gitlab-runner.service,因为一旦如上所述重新启动服务,它就会被更新

检查配置是否反映,运行

ps aux | grep gitlab
于 2020-07-03T20:58:49.013 回答
2

[弃用的答案]

我找到了一个解决方案,这不是最好的做法,但解决了它。我需要使用 ssh 执行器和 ssh 到 localhost。需要将 gitlab-runner id_rsa.pub 添加到用户的 authorized_keys 您要使用的内容中。有我的扩展代码:

concurrent = 1

[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "ssh"
  [runners.ssh]
    user = "user"
    host = "localhost"
    port = "22"
    identity_file = "/home/gitlab-runner/.ssh/id_rsa"
于 2016-05-12T18:33:23.980 回答
0

只是为了将来参考,我正在使用我的设置的克隆版本进行测试,如果域名未指向您正在使用的服务器,gitlab 可能会考虑您的跑步者离线。如果您有另一个(复制的)实例在域指向的 ip 上运行并且没有防火墙阻止,则 gitlab-runner verify 命令将说您的跑步者还活着。

一个解决方案可能是将指向 127.0.0.1 的域添加到主机文件中。您必须重新启动 gitlab 实例和运行器。

于 2018-04-09T09:24:26.177 回答
0

对于最新版本的 gitlab-runner,您应该修改/etc/default/gitlab-runner文件中的系统参数。

于 2020-04-27T23:59:59.357 回答
0

这里是docker gitlab-runner 的示例:

基于 Dockerfile 构建自己的 runner 镜像,内容如下

FROM gitlab/gitlab-runner
# add new user (if needed)
RUN useradd -u 998 gitlab-www && mkdir /home/gitlab-www && \
    chown gitlab-www /home/gitlab-www && chmod u+rwx /home/gitlab-www
# need to replace entrypoint to force new created user over gitlab-runner
ENTRYPOINT /usr/bin/dumb-init /entrypoint run --user=gitlab-www --working-directory=/home/gitlab-www

(根据需要-u 998更新gitlab-www

.gitlab-ci.yml 脚本现在以用户身份运行gitlab-www。如果这个与主机挂载具有相同的 uid,您也可以直接部署到主机文件夹。

于 2020-12-23T19:39:55.243 回答