0

我正在尝试在我自己的服务器上运行 gitlab ci。我使用特权在单独的机器上注册了 gitlab-runner

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 文件。但是,尝试执行 configure_file 命令时,其中一个 cmake 文件失败

CMake Error at CMakeLists.txt:80 (configure_file):
  Operation not permitted

我认为这是我的 gitlab-runner 的权限问题,但我使用 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-runner 更改为我的主机用户,但它没有用。

这是使我的构建失败的行。

4

1 回答 1

0

我在 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
于 2022-01-04T17:44:48.163 回答