gitlab-runner 不允许操作
Operation not permitted on gitlab-runner
我正尝试在我自己的服务器上 运行 一个 gitlab ci。我使用特权
在单独的机器上注册了 gitlab-运行ner
sudo gitlab-runner -n \
--url https://git.myServer.com/ \
--registration-token TOKEN \
--executor docker \
--description "Docker runner" \
--docker-image "myImage:version" \
--docker-privileged
然后我创建了一个简单的.gitlab-ci.yml
配置
stages:
- build
default:
image: myImage:version
build-os:
stage: build
script: ./build
我的构建脚本构建了一些 cpp 文件并触发了一些 cmake 文件。但是,其中一个 cmake 文件在尝试执行 configure_file 命令时失败
CMake Error at CMakeLists.txt:80 (configure_file):
Operation not permitted
我认为这是我的 gitlab-运行ner 的权限问题,但我用 sudo 权限注册了它。
知道我错过了什么吗?谢谢!
编辑:
这是我的 config.toml 文件
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "Description"
url = "https://git.myServer.com/"
token = "TOKEN"
executor = "docker"
environment = [
"DOCKER_AUTH_CONFIG={config}",
"GIT_STRATEGY=clone",
]
clone_url = "https://git.myServer.com"
builds_dir = "/home/gitlab-runner/build"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "myImage:version"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = [
"/tmp/.X11-unix:/tmp/.X11-unix",
"/dev:/dev",
"/run/user/1000/gdm/Xauthority:/home/gitlab-runner/.Xauthority",
]
memory = "8g"
memory_swap = "8g"
ulimit = ["core=0", "memlock=-1", "rtprio=99"]
shm_size = 0
pull_policy = ["if-not-present"]
network_mode = "host"
我也尝试过将用户从 gitlab-运行ner 更改为我的主机用户 但它没有用。
这是 line 导致我的构建失败。
当 ci 为 运行 时,我从运行器机器进入了容器,我注意到存储库是以 root 身份克隆的,但构建目录是在用户下创建的。 cofigure_file 命令试图修改存储库中的文件,因此就像用户试图修改以 root 身份创建的文件(当克隆时)。我没有设法让 gitlab-runner 软件以用户身份克隆存储库。相反,我的解决方法是在构建之前更改文件夹的权限。我的 .gitlab-ci.yml 现在看起来像这样
stages:
- build
default:
image: myImage:version
build-os:
stage: build
script:
- cd ../ && sudo chown -R user:sudo my-repo/ && cd my-repo/
- ./build
我正尝试在我自己的服务器上 运行 一个 gitlab ci。我使用特权
在单独的机器上注册了 gitlab-运行nersudo gitlab-runner -n \
--url https://git.myServer.com/ \
--registration-token TOKEN \
--executor docker \
--description "Docker runner" \
--docker-image "myImage:version" \
--docker-privileged
然后我创建了一个简单的.gitlab-ci.yml
配置
stages:
- build
default:
image: myImage:version
build-os:
stage: build
script: ./build
我的构建脚本构建了一些 cpp 文件并触发了一些 cmake 文件。但是,其中一个 cmake 文件在尝试执行 configure_file 命令时失败
CMake Error at CMakeLists.txt:80 (configure_file):
Operation not permitted
我认为这是我的 gitlab-运行ner 的权限问题,但我用 sudo 权限注册了它。
知道我错过了什么吗?谢谢!
编辑: 这是我的 config.toml 文件
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "Description"
url = "https://git.myServer.com/"
token = "TOKEN"
executor = "docker"
environment = [
"DOCKER_AUTH_CONFIG={config}",
"GIT_STRATEGY=clone",
]
clone_url = "https://git.myServer.com"
builds_dir = "/home/gitlab-runner/build"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "myImage:version"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = [
"/tmp/.X11-unix:/tmp/.X11-unix",
"/dev:/dev",
"/run/user/1000/gdm/Xauthority:/home/gitlab-runner/.Xauthority",
]
memory = "8g"
memory_swap = "8g"
ulimit = ["core=0", "memlock=-1", "rtprio=99"]
shm_size = 0
pull_policy = ["if-not-present"]
network_mode = "host"
我也尝试过将用户从 gitlab-运行ner 更改为我的主机用户
这是 line 导致我的构建失败。
当 ci 为 运行 时,我从运行器机器进入了容器,我注意到存储库是以 root 身份克隆的,但构建目录是在用户下创建的。 cofigure_file 命令试图修改存储库中的文件,因此就像用户试图修改以 root 身份创建的文件(当克隆时)。我没有设法让 gitlab-runner 软件以用户身份克隆存储库。相反,我的解决方法是在构建之前更改文件夹的权限。我的 .gitlab-ci.yml 现在看起来像这样
stages:
- build
default:
image: myImage:version
build-os:
stage: build
script:
- cd ../ && sudo chown -R user:sudo my-repo/ && cd my-repo/
- ./build