首页 > 解决方案 > 具有特定用户的 Gitlab CI 作业

问题描述

我正在尝试运行 anchore 引擎的 Gitlab CI 作业来扫描 docker 图像。脚本部分中的命令失败,错误为permission denied. 我发现该命令需要root用户权限。sudo 未安装在我使用的 docker 映像中,并且 docker 容器中gitlab runner只有非 sudo 用户。anchore

下面是容器扫描的 CI 作业。

container_scan:
   stage: scan
   image:
    name: anchore/anchore-engine:latest
    entrypoint: ['']
   services:
    - name: anchore/engine-db-preload:latest
      alias: anchore-db

   variables:
    GIT_STRATEGY: none
    ANCHORE_HOST_ID: "localhost"
    ANCHORE_ENDPOINT_HOSTNAME: "localhost"
    ANCHORE_CLI_USER: "admin"
    ANCHORE_CLI_PASS: "foobar"
    ANCHORE_CLI_SSL_VERIFY: "n"
    ANCHORE_FAIL_ON_POLICY: "true"
    ANCHORE_TIMEOUT: "500"

   script:
    - |
        curl -o /tmp/anchore_ci_tools.py https://raw.githubusercontent.com/anchore/ci-tools/master/scripts/anchore_ci_tools.py
        chmod +x /tmp/anchore_ci_tools.py
        ln -s /tmp/anchore_ci_tools.py /usr/local/bin/anchore_ci_tools
    - anchore_ci_tools --setup
    - anchore-cli registry add "$CI_REGISTRY" gitlab-ci-token "$CI_JOB_TOKEN" --skip-validate
    - anchore_ci_tools --analyze --report --image "$IMAGE_NAME" --timeout "$ANCHORE_TIMEOUT"
    - |
        if ; then
         anchore-cli evaluate check "$IMAGE_NAME"
        else
         set +o pipefail
         anchore-cli evaluate check "$IMAGE_NAME" | tee /dev/null
        fi

   artifacts:
    name: ${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}
    paths:
    - image-*-report.json

ln -s /tmp/anchore_ci_tools.py /usr/local/bin/anchore_ci_toolsCI 作业在脚本部分失败。我试图在该entrypoint部分添加用户

  name: anchore/anchore-engine:latest
  entrypoint: ['bash', '-c', 'useradd myuser && exec su myuser -c bash']

但它不允许创建用户。我试过在 linux 中运行 docker 容器,docker run -it --user=root anchore/anchore-engine:latest /bin/bash它运行没有任何问题。如何在 gitlab-ci 工作中模拟相同的内容?

标签: dockergitlabdockerfilegitlab-ci

解决方案


推荐阅读