我想将前端上传到哨兵,但是我需要使用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
我该如何解决?
答案 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
的定义。