Jenkins 的 Docker 任务的用户与组的问题
Jenkins 下的 Docker 插件会传入构建宿主机的 jenkins
用户所在的的 uid
及 gid
。
在单一或固定 uid/gid 机器的环境下,这个选择没有问题。但如果部署的机器里的 jenkins
用户有着不同的 uid/gid,则会遇到各种问题…
因此,需要在 Docker 镜像内添加对应的用户信息。
# 基于 Alpine 的镜像
RUN addgroup -g 800 jenkins \
&& adduser -D -G jenkins -u 800 jenkins
# 基于 Debian 的镜像
RUN groupadd -g 800 jenkins \
&& useradd -m -g 800 -u 800 jenkins
然后在所有宿主机将对应的 uid/gid 更新,并设定权限:
groupmod -g 800 jenkins
usermod -u 800 jenkins
chown -R jenkins:jenkins /home/jenkins
注意:需要提前将该节点从 Jenkins 下线,否则无法正常更改用户 uid。