Gitlab--CI执行用户问题

19年团队使用了 Gitlab-CI,做一些自动构建流程。最近团队小伙伴自己尝试搭建流程,参照了我之前发的文章 – Gitlab–CI。但过程中,遇到了用户执行权限的问题。于是有了下面的内容…

问题描述

按照文章(https://ligang.blog.csdn.net/article/details/89785856)中说明,操作完成发现了权限问题。

问题复盘

首先要明确,CI 默认执行用户为 gitlab-runner

$ ps aux | grep gitlab

/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

文章中包括 gitlab-runner 服务启动在内的,所有操作都是使用 sudo。这也是为什么,文章中,将 gitlab-runner 免密使用sudo命令,并在脚本的命令前加上 sudo 的要求。

# 切换到root账号下
$ su
# 添加sudo文件的写权限
$ chmod u+w /etc/sudoers
# 编辑sudoers文件
$ vi /etc/sudoers
# 添加如下内容 允许用户gitlab-runner执行sudo命令,并且在执行的时候不输入密码
gitlab-runner ALL=(ALL) NOPASSWD: ALL
# 撤销sudo文件写权限
$ chmod u-w /etc/sudoers

官方关于权限的说明,可参照:Super-user permission

上述内容,是团队小伙伴所忽略的。当然,小伙伴提出了另外一种方式,使用 root 执行。

  1. 修改 /etc/systemd/system/gitlab-runner.service

    [Service]
    ExecStart=/usr/bin/gitlab-ci-multi-runner "run" "--working-directory" "/工作目录" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "root"
    
    arameterDefaultDescription
    –servicegitlab-runnerSpecify service name to use
    –configSee the configuration fileSpecify a custom configuration file to use
    –syslogtrueSpecify if the service should integrate with system logging service
    –working-directorythe current directorySpecify the root directory where all data will be stored when builds will be run with the shell executor
    –userrootSpecify the user which will be used to execute builds
    –passwordnoneSpecify the password for the user that will be used to execute the builds
  2. 重新加载配置文件,并启动

    $ systemctl daemon-reload
    $ systemctl restart gitlab-runner
    

综上,欢迎大家积极讨论~~~

奋飛 CSDN认证博客专家 技术管理 前端工程化
乐观、勇气、专注、果断、好奇、公正、慎思、真诚、追求极致追求完美、诚信!独立撰写了多个前端专题模块,访问量达百万级。多次负责组织大数据可视化前端架构平台开发工作。对前端新技术、新潮流具有很强的敏锐力和洞察力!
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页