使用getsentry / sentry-cli时Docker不起作用

时间:2019-08-14 12:59:15

标签: docker gitlab gitlab-ci sentry

我想将前端上传到哨兵,但是我需要使用docker命令来获取文件夹。但是,当我使用image: getsentry/sentry-cli时 码头工人不工作,例如在before_script中,我得到一个错误,即docker不存在

sentry_job:
  stage: sentry_job
  image: getsentry/sentry-cli
  services:
    - docker:18-dind
  before_script:
    - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" registry.gitlab.cz
  script:
   # script...
.   # Get the dist folder from the image
- mkdir frontend_dist
- docker run --rm -v $PWD/frontend_dist:/mounted --entrypoint="" $IMAGE /bin/sh -c "cp /frontend/dist /mounted"
- ls frontend_dist

  tags:
    - dind

我该如何解决?

1 个答案:

答案 0 :(得分:1)

要实现所需的目标,您需要使用单个作业(具有相同的构建上下文),并指定 docker:stable 作为作业{{ 1}}(以及 image 作为docker:stable-dind)。

此设置称为docker-in-docker,这是允许GitLab CI service运行script命令(see doc)的标准方法。

因此,您可以像这样稍微修改docker代码:

.gitlab-ci.yml

注意:sentry_job: stage: sentry_job image: docker:stable services: - docker:stable-dind variables: IMAGE: "${CI_REGISTRY_IMAGE}:latest" before_script: - docker login -u gitlab-ci-token -p "${CI_JOB_TOKEN}" registry.gitlab.cz script: - git pull "$IMAGE" - mkdir -v frontend_dist - docker run --rm -v "$PWD/frontend_dist:/mounted" --entrypoint="" "$IMAGE" /bin/sh -c "cp -v /frontend/dist /mounted" - ls frontend_dist - git pull getsentry/sentry-cli - docker run --rm -v "$PWD/frontend_dist:/work" getsentry/sentry-cli tags: - dind 命令是可选的(它们确保Docker将使用最新版本的映像)。

此外,您可能需要更改变量git pull的定义。