在 gitlab ci 中验证 docker 内的sentry-cli

use*_*222 1 sentry gitlab docker gitlab-ci gitlab-ci-runner

我想在我的 docker 镜像中运行sentry-cli,如下所示:

sentry-frontend:
  stage: sentry
  services:
    - docker:18-dind
  before_script:
    - docker login -u gitlab-ci-token -p "$CI_JOB_TOKEN" registry.xxx.xx
  script:
    - export SENTRY_AUTH_TOKEN=xxxxxxxxxxxxxxxxxx
    - export IMAGE=$CI_REGISTRY_IMAGE/frontend-builder:$CI_COMMIT_REF_NAME
    - export RELEASE_VERSION=$CI_COMMIT_REF_NAME
    - docker pull getsentry/sentry-cli
    - docker run --rm -v $(pwd):/work getsentry/sentry-cli releases -o org -p frontend new $RELEASE_VERSION

  tags:
    - dind
Run Code Online (Sandbox Code Playgroud)

然而工作失败了,因为

error: API request failed caused by: sentry reported an error: Authentication credentials were not provided. (http status: 401)

我试过:

- docker run --rm -v $(pwd):/work getsentry/sentry-cli --auth-token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

但是之后我收到了与跑步时相同的消息

docker run --rm -v $(pwd):/work sentry-cli --help

之后它就失败了,就好像命令不正确一样。我似乎也找不到任何有关如何正确执行此操作的信息。如何在该图像内提供凭据?

Eri*_*kMD 5

如果要将SENTRY_AUTH_TOKEN环境变量传递给容器,可以docker run像这样调整命令:

docker run --rm -v "$PWD:/work" -e SENTRY_AUTH_TOKEN="$SENTRY_AUTH_TOKEN" getsentry/sentry-cli releases -o org -p frontend new $RELEASE_VERSION
Run Code Online (Sandbox Code Playgroud)

或者更简洁地说:

docker run --rm -v "$PWD:/work" -e SENTRY_AUTH_TOKEN getsentry/sentry-cli releases -o org -p frontend new $RELEASE_VERSION
Run Code Online (Sandbox Code Playgroud)

docker(但请注意,如果是 的别名,则后一个版本将不起作用sudo docker

相关文档页面是: docs.docker.com/engine/reference/commandline/run/

顺便说一句,请注意,这比(少一个旋转过程)-v "$PWD:/work"更有效。-v "$(pwd):/work"