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



我想将我的前端上传到哨兵,但我需要使用docker命令获取文件夹。但是当我使用image: getsentry/sentry-clidocker 不起作用,例如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

我该如何解决这个问题?

要实现您想要的,您需要使用单个作业(具有相同的构建上下文(并将docker:stable指定为作业image(以及docker:stable-dind作为service(。

此设置称为 docker-in-docker,这是允许 GitLab CIscript运行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

注意:git pull命令是可选的(它们确保 Docker 将使用最新版本的映像(。

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

相关内容

  • 没有找到相关文章

最新更新