更改Gitlab CI运行程序用户

更改Gitlab CI运行程序用户,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,当前,当我在GitlabCI中启动构建时,它正在gitlab runner user下运行。我想把它改成公司的内部用户。我没有找到/etc/gitlab runner/config.toml的任何参数来解决这个问题 我当前的配置: concurrent = 1 [[runners]] name = "deploy" url = "" token = "" executor = "shell" [不赞成的回答] 我找到了一个解决办法,这不是最好的办法,而是解决了它。我需要使用ss

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

我当前的配置:

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "shell"
[不赞成的回答]

我找到了一个解决办法,这不是最好的办法,而是解决了它。我需要使用ssh执行器和ssh到本地主机。需要将gitlab runner id_rsa.pub添加到用户的授权_密钥中您想要使用的内容。这是我的扩展代码:

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"

运行
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
宾果,让我们现在更改此文件:

gitlab-runner uninstall

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

重新启动机器或重新加载服务(即重新加载systemctl守护进程),等等
解决方案可能是将指向127.0.0.1的域添加到主机文件中。您必须重新启动gitlab实例和运行程序。

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

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

  • 创建一个
    /etc/systemd/system/gitlab runner.service.d
    目录
  • 创建一个
    /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"
    
  • 执行
    systemctl后台程序重新加载


  • 现在,要检查此功能是否正常工作,您可以执行以下操作:

  • 重新安装GitLab Runner软件包
    GitLab Runner卸载
    ,然后
    GitLab Runner安装

  • 检查ps aux | grep gitlab并确认使用了正确的用户


  • 来源:

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

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

    gitlab-runner uninstall
    
    注意:您不需要为此编辑
    /etc/systemd/system/gitlab runner.service
    ,因为它将在如上所述重新启动服务后更新

    要检查配置是否反射,请运行

    ps aux | grep gitlab
    

    下面是dockergitlab 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
    
    (根据需要更新
    -u998
    gitlab www


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

    gitlab runner run命令使用一个--user选项,允许指定用户。我认为这种cli是新的,因为我查找了类似的内容,但cli还不支持它。谢谢你们,回答得很好。是的,GitlabCI进展非常快,他们添加了新功能,但有时会出现新的bug,所以升级时一定要小心!这将返回-
    致命:已提供但未定义的标志:-user
    @letsc try
    --user
    @letsc在
    sudo gitlab runner安装时不会报告此“-user”错误
    Upvote!感谢您添加关于使其持久化的有用信息。
    ps aux | grep gitlab
    
    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