gitlab runner配置
runner使用背景
对于我们项目开发来说,为了防止主项目被污染,在多人协作开发的时候,要fork一个子项目到自己的工作目录下,切分支然后进行修改之后,再从当前项目中提一个merge request到主项目中,主项目merge负责人觉得没问题的时候,再进行主项目分支和合并。
对于一个开发小组来说,利用gitlab的CI CD帮助我们做代码风格的检查,镜像的打包是一件非常方便的事情。而想通过使用CI CD的话,则需要配置runner。一般来说,我们都会配置一个公共的runner来供一个开发小组去使用。
而在新人加入一个用户组根据主项目fork出来的项目的时候,并没有看到主项目所配置的runner。需要给新人赋予主项目的maintainer权限时候才能看到对应的runner,并且回收掉maintainer权限时候runner依然存在,不影响后续使用。对于这种runner的配置方式感到繁琐且不符合规范,maintainer权限不能够随便赋予他人,而应当赋予开发者的权限。这里探讨有没有一种规范且方便的赋予runner的方法。
runner使用需求
配置的runner希望能够被所有人使用,因为涉及到代码风格检查,镜像打包上传等公共操作
方便配置
三种runner类型
官方描述:https://docs.gitlab.com/ee/ci/runners/runners_scope.html
Shared runners
are available to all groups and projects in a GitLab instance.
Group runners
are available to all projects and subgroups in a group.
Specific runners
are associated with specific projects. Typically, specific runners
OPM specific runner配置
由于权限原因,共享runner需由管理员配置,群组runner需由群组的owner配置,作为developer,我们可以选择配置specific runner,下面介绍OPM项目的specific runner配置过程。
安装和配置过程可参考此文章:gitlab runner安装与使用
gitlab runner执行权限问题
按照上面文章教程配置好gitlab runner后,在提交代码进行测试时发现runner的执行权限有问题,无法进入其他用户目录或者无法使用root用户安装的软件,通过下面命令查看runner当前执行用户。
ps aux|grep gitlab-runner
如下图所示,可以看到当前执行用户为gitlan-runner:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HElWJLM7-1681798269010)(http://blog.sway.com.cn/wp-content/uploads/2023/01/image-11.png)]
编辑/etc/systemd/system/gitlab-runner.service文件,并修改–user后的参数为root:
重启gitlab-runner
systemctl daemon-reload
systemctl restart gitlab-runner