【汇总】解决GitLab-Runner执行脚本命令无权限
前言
GitLab 是用于协作处理代码的开源软件。
使用细粒度访问控制管理 git 存储库,确保代码安全。
执行代码审查并增强与合并请求的协作。
问题发现
再.gitlab-ci.yml
配置项目部署脚本时,发现没有权限执行。
build:
script:
- mvn clean install
- pwd
- scp target/maven-test-1.0-SNAPSHOT.jar /home/maven-test/test.jar
tags:
- test
only:
- master
将网上一些解决方案,特此记录。
问题解决
我们可以看到gitlab-runner
文件所属的用户是gitlab-runner,运行时gitlab-runner用户只能再gitlab-runner
文件里操作,所以没有权限操作root的文件,知道了原因后问题也就好解决了。
方法一:修改用户权限
修改用户权限有很多方法,这里介绍网上看到两种常见的。
编辑vim /etc/sudoers
文件,文件中找到root ALL=(ALL) ALL
配置,在下面新增一行用户权限(允许gitlab-runner用户不用输入密码可执行任意路径下的任意命令 ):
gitlab-runner ALL=(ALL) NOPASSWD: ALL
保存退出后,在命令中增加sudo
命令
build:
script:
- mvn clean install
- pwd
- sudo scp target/maven-test-1.0-SNAPSHOT.jar /home/maven-test/test.jar
tags:
- test
only:
- master
可看到执行成功。
方法二:重新安装将用户更改为root
先卸载gitlab-runner。
./gitlab-runner uninstall
然后再重新安装,并且设置用户为root。
./gitlab-runner install --user=root --working-directory=/home/gitlab-runner
执行启动。
./gitlab-runner start
执行ps aux|grep gitlab-runner
命令,查看当前启动的用户角色。
可以把主目录的文件权限也改成root。
chown -R root:root gitlab-runner/
然后重新执行.gitlab-ci.yml
文件。
可看到执行成功。