更改 Gitlab CI Runner 用户
Change Gitlab CI Runner user
目前,当我在 GitlabCI 中开始构建时,它是 运行 在 gitlab-runner 用户下。我想把它改成公司内部用户。我没有找到 /etc/gitlab-runner/config.toml 的任何参数来解决这个问题。
我目前的配置:
concurrent = 1
[[runners]]
name = "deploy"
url = ""
token = ""
executor = "shell"
[已弃用的答案]
我找到了一个解决方案,虽然不是最好的方案,但已经解决了。我需要使用 ssh 执行器和 ssh 到本地主机。需要将 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"
运行 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]
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
),等等!
仅供将来参考,我正在使用我的设置的克隆版本进行测试,如果域名未指向您正在使用的服务器,gitlab 可能会考虑您的跑步者离线。如果您在域指向的 IP 上有另一个(复制的)实例 运行,并且没有防火墙阻止,gitlab-runner 验证命令会说您的跑步者还活着。
一个解决方案可能是将指向 127.0.0.1 的域添加到主机文件中。你必须重新启动你的 gitlab 实例和运行器。
请注意,当使用特定用户 (--user) 进行安装时,无论何时更新,它都会恢复为原始 systemd 脚本,因此,将恢复为使用 gitlab-runner 用户。
为了在更新中保持用户更改,使用 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 daemon-reload
现在要检查它是否正常工作,您可以这样做:
重新安装 GitLab Runner 包 gitlab-runner uninstall
然后 gitlab-runner install
检查 ps aux | grep gitlab
并确认正在使用正确的用户
对于最新版本的 gitlab-runner,您应该修改 /etc/default/gitlab-runner
文件中的系统参数。
注册 gitlab-runner
后(是的,它将安装在用户 gitlab-runner
和工作目录 /home/gitlab-runner
下),您可以执行以下操作来更改 运行ner的用户
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
NOTE: you don't need to edit /etc/systemd/system/gitlab-runner.service
for this, as it is being updated once the service is restarted as above
检查配置是否反映,运行
ps aux | grep gitlab
这里是 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,你也可以直接部署到主机文件夹。
目前,当我在 GitlabCI 中开始构建时,它是 运行 在 gitlab-runner 用户下。我想把它改成公司内部用户。我没有找到 /etc/gitlab-runner/config.toml 的任何参数来解决这个问题。
我目前的配置:
concurrent = 1
[[runners]]
name = "deploy"
url = ""
token = ""
executor = "shell"
[已弃用的答案]
我找到了一个解决方案,虽然不是最好的方案,但已经解决了。我需要使用 ssh 执行器和 ssh 到本地主机。需要将 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"
运行 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]
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
),等等!
仅供将来参考,我正在使用我的设置的克隆版本进行测试,如果域名未指向您正在使用的服务器,gitlab 可能会考虑您的跑步者离线。如果您在域指向的 IP 上有另一个(复制的)实例 运行,并且没有防火墙阻止,gitlab-runner 验证命令会说您的跑步者还活着。
一个解决方案可能是将指向 127.0.0.1 的域添加到主机文件中。你必须重新启动你的 gitlab 实例和运行器。
请注意,当使用特定用户 (--user) 进行安装时,无论何时更新,它都会恢复为原始 systemd 脚本,因此,将恢复为使用 gitlab-runner 用户。
为了在更新中保持用户更改,使用 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 daemon-reload
现在要检查它是否正常工作,您可以这样做:
重新安装 GitLab Runner 包
gitlab-runner uninstall
然后gitlab-runner install
检查
ps aux | grep gitlab
并确认正在使用正确的用户
对于最新版本的 gitlab-runner,您应该修改 /etc/default/gitlab-runner
文件中的系统参数。
注册 gitlab-runner
后(是的,它将安装在用户 gitlab-runner
和工作目录 /home/gitlab-runner
下),您可以执行以下操作来更改 运行ner的用户
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
NOTE: you don't need to edit
/etc/systemd/system/gitlab-runner.service
for this, as it is being updated once the service is restarted as above
检查配置是否反映,运行
ps aux | grep gitlab
这里是 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,你也可以直接部署到主机文件夹。