更改Gitlab CI运行程序用户
当前,当我在GitlabCI中启动构建时,它正在gitlab runner user下运行。我想把它改成公司的内部用户。我没有找到/etc/gitlab runner/config.toml的任何参数来解决这个问题 我当前的配置:更改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
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守护进程),等等只是为了将来的参考,我正在用我的设置的克隆版本做测试,如果域名不是指向你正在使用的服务器,GITLAB可能会认为你的赛跑者离线。如果您有另一个(复制的)实例在域所指向的ip上运行,并且没有防火墙阻止,那么gitlab runner verify命令将表明您的运行程序处于活动状态
解决方案可能是将指向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,您应该修改
/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