我有一个Linux的AWS EC2。我已经安装了GitLab运行器,我遵循https://docs.gitlab.com/runner/install/linux-repository.html for RHEL/CentOS/Fedora。它是一个Shell执行器。我已经注册了。然后在EC2上安装Docker。
当我启动管道,我得到这个错误:
Initialized empty Git repository in /home/gitlab-runner/builds/xxxx/0/xxxx/xxxx/.git/
Created fresh repository.
Checking out b25b6b1a as develop...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:00
$ amazon-linux-extras install docker
You lack permissions to write to system configuration. /etc/yum.repos.d/amzn2-extras.repo
提示吗?
既然你使用的是" shell ";执行器,您在管道中运行的命令本质上就像您使用gitlab-runner
用户SSH到机器中一样(假设您没有更改运行程序默认使用的用户)。默认情况下,该用户没有安装包的权限,这就是您在这里看到的错误。
您需要将您的gitlab-runner用户添加到sudoers文件中,然后使用sudo
来运行您的命令。
说了这么多,是否有令人信服的理由让您不使用docker执行器?工作之间的隔离更加清晰。例如,如果在shell执行器上同时运行多个作业,并且它们都安装包,则其中一个作业将由于无法获得包锁而失败。您可以使用resource_group
来解决这个问题,但是docker是一个更优雅的解决方案。