我有一个mvn项目,必须以非root用户的身份构建,但默认情况下,gitlab-ci允许runner以root用户的身份运行。我通过设置gitlab-ci.yml文件来使用gitlab.com runner。我试着创建一个用户,然后像这样切换到它:
mvn
gitlab-ci.yml
gitlab.com
$ useradd *** $ su -*** $ whoami root
它还是说我是根。我该如何解决这个问题?
cwxwcias1#
您可以使用sudo轻松实现这一点,例如,摘录自my .gitlab-ci.yml:
sudo
script: - useradd -d /builds/{GITLAB_USER} -g users -M -N builder - chown -R builder:users .. - | sudo -H -i -u builder sh -e -x << EOS umask 0077 export CONTINUOUS_INTEGRATION_SYSTEM="gitlab" TIMESTAMP=`date +%Y%m%d%H%M%S` DEFAULT_TARGET="debug" export PREFIX="\${HOME}/usr" SYSCONFDIR="\${HOME}/etc/conf" LOCALSTATEDIR="\${HOME}/var" cd my-project make install make -C _deploy/debian clean package bundle BUILD_ID="-0{other}\${TIMESTAMP}" EOS
其中{GITLAB_USER}是您的实际gitlab用户。记住在脚本中转义$
cyvaqqii2#
只需为正确的用户安装gitlab-runner服务:
gitlab-runner install --working-directory /home/ubuntu --user ubuntu
这里,ubuntu是任意非root用户。
ubuntu
vngu2lb83#
sudo gitlab-runner install --working-directory /home/username --user username
你需要root用户才能安装--user标志,这样你才能以非特权用户的身份运行gitlab-runner。
--user
wwwo4jvm4#
有几种方法可以实现这一点。由于gitlab-ci作业只是运行进程的docker容器,实现这一点的一种方法是使用gosu,在那里你可以以非root用户的身份运行进程。以下链接展示了如何使用gosu:
4条答案
按热度按时间cwxwcias1#
您可以使用
sudo
轻松实现这一点,例如,摘录自my .gitlab-ci.yml:其中{GITLAB_USER}是您的实际gitlab用户。记住在脚本中转义$
cyvaqqii2#
只需为正确的用户安装gitlab-runner服务:
这里,
ubuntu
是任意非root用户。vngu2lb83#
你需要root用户才能安装
--user
标志,这样你才能以非特权用户的身份运行gitlab-runner。wwwo4jvm4#
有几种方法可以实现这一点。由于gitlab-ci作业只是运行进程的docker容器,实现这一点的一种方法是使用gosu,在那里你可以以非root用户的身份运行进程。以下链接展示了如何使用gosu: