【问题标题】:Change Gitlab CI Runner user更改 Gitlab CI Runner 用户
【发布时间】:2016-09-08 08:18:13
【问题描述】:

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

我目前的配置:

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

【问题讨论】:

  • gitlab-runner run 命令带有一个 ----user 选项,允许指定用户。

标签: gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

这里是 docker gitlab-runner 的示例:

基于Dockerfile构建自己的运行器镜像,内容如下

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 998gitlab-www

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

【讨论】:

    【解决方案2】:

    一旦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
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        [弃用的答案]

        我找到了一个解决方案,这不是最好的做法,但解决了它。我需要使用 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"
        

        【讨论】:

        • 为什么您认为这不是“最佳实践”?除非您准备好使用虚拟机或容器解决方案,否则这似乎是您唯一的选择。
        • @Auspex 这已经快 5 年了,从那时起 Gitlab 发生了很大变化。
        • 尽管如此,我看不到另一种以不同用户身份运行命令的方法。我不准备为单个存储库实现 docker runner。
        【解决方案5】:

        请注意,当使用特定用户 (--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

        【讨论】:

        • 点赞!感谢您添加有关使其持久化的有用信息。
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          运行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),等等!

          【讨论】:

          • 我认为这种cli是新的,因为我找了类似的东西,但是cli还不支持。谢谢你,很好的回答。
          • 是的,GitlabCI 的发展速度非常快,它们会添加新功能,但有时也会出现新错误,因此请务必谨慎升级!
          • 返回 - FATAL: flag provided but not defined: -user
          • @letsc 试试--user
          • @letsc sudo gitlab-runner install时不会报这个'-user'错误
          猜你喜欢
          • 2017-06-10
          • 2021-01-13
          • 2015-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多