【问题标题】:how to clone without root on gitlab-runner docker如何在 gitlab-runner docker 上无 root 克隆
【发布时间】:2022-01-03 18:10:31
【问题描述】:

我正在尝试为我的代码创建一个 ci 管道。我已经在我的机器上注册了一个 docker executor 的跑步者。我注意到它正在 docker 容器内以 root 权限克隆存储库

$ ls -l
total 4
drwxrwxrwx 4 root root 4096 Jan  3 18:02 my-repo

因此,要在我的 repo 上构建内容,我必须使用 .gitlab-ci.yml 中的 sudo 运行一些命令,而我不希望这样做。

stages:
  - build

default:
  image: MyImage:latest

build:
  stage: build
  script: 
    # I don't want to use sudo here but as my repo is cloned with root privileges I must use sudo.
    - sudo ./build -j 1 

有没有办法告诉 gitlab-runner 以用户权限克隆存储库?

编辑

我的 dockerfile 使用用户创建图像

# Create a user of uid/gid 1000 to match user on most host machines
RUN apt-get update && apt-get -y install sudo && rm -rf /var/lib/apt/lists/*
RUN addgroup --gid 1000 myUser
RUN adduser --disabled-password --gecos "" --uid 1000 --gid 1000 myUser
RUN usermod -a -G sudo myUser
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
RUN usermod -a -G dialout myUser

USER myUser

RUN touch ~/.sudo_as_admin_successful

COPY --chown=1000:1000 export.sh .
RUN ./export.sh

WORKDIR /dev_folder/
CMD ["/bin/bash"]

【问题讨论】:

    标签: docker gitlab continuous-integration gitlab-runner


    【解决方案1】:

    如果你在构建阶段需要这个,你必须从你的 Dockerfile 处理你的 repo 的用户权限。

    这是来自 gitlab-ci 的构建阶段的经典示例:

    build:
      stage: build
      script:
        - docker build --pull -t $CONTAINER_TEST_IMAGE -f ./docker/Dockerfile .
        - docker logout
        - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $REGISTRY_SERVER
        - docker push $CONTAINER_TEST_IMAGE
      only:
        - tags@group/project

    所以你可以将你的代码写入 dockerfile,然后让 gitlab 来构建它

    在你的情况下,你有两种方法:

    • 1 处理图片的默认入口用户和权限
    • 2 在你的 gitlab-ci 文件中添加一个入口点,如下所示:

    image:
      name: super/sql:experimental
      entrypoint: ["docker-entrypoint.sh"]

    最后一个覆盖容器的默认入口点。 我认为第一点是干净简单的方法

    【讨论】:

    • 所以由于镜像用户的权限,存储库被克隆为 docker 容器内的 root 用户?
    • 是的,让我知道它是否有效
    • 我的 dockerfile 已经有一个用户(见问题),但存储库仍被克隆为 root。
    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多