如何在gitlab上的Dockerfile中包含CI_JOB_TOKEN?

Jar*_*ede 6 gitlab docker gitlab-ci-runner

我遇到了一个问题,我似乎正在努力传递CI_JOB_TOKENCI/CD 流程,以便我可以从我的 gitlab npm 模块下载私有的 gitlab npm 模块Dockerfile

\n\n

我的文件看起来像这样:

\n\n

gitlab-ci.yml

\n\n
image: tmaier/docker-compose:latest\n  variables:\n    CI_JOB_TOKEN: ${CI_JOB_TOKEN}\n\xe2\x80\x8b\nstages:\n  - build\n\xe2\x80\x8b\nbuild:\n  stage: build\n  script:\n    - docker-compose build --build-arg CI_JOB_TOKEN=${CI_JOB_TOKEN}\n    - docker-compose push --arg CI_JOB_TOKEN=${CI_JOB_TOKEN}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x8b\n docker-compose.yml

\n\n
services:\n  qa-service:\n    build:\n      context: .\n      args:\n        PORT: 3000\n        CI_JOB_TOKEN: ${CI_JOB_TOKEN}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x8b\n Dockerfile

\n\n
FROM ubuntu:latest\n\xe2\x80\x8b\nARG CI_JOB_TOKEN\nRUN npm install \\\n    "git+https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.example.com/xxx/yyy.git"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不断收到此错误

\n\n
\n

npm 错误!执行时出错:

\n\n

npm 错误!/usr/bin/git ls-remote -h -t https://gitlab-ci-token:%24%7BCI_JOB_TOKEN%7D@gitlab.example.com/xxx/yyy.git

\n\n

npm 错误!

\n\n

npm 错误!远程:HTTP 基本:访问被拒绝

\n\n

npm 错误!致命:\' https://gitlab-ci-token:%24%7BCI_JOB_TOKEN%7D@gitlab.example.com/xxx/yyy.git/ \'身份验证失败

\n\n

npm 错误!

\n\n

npm 错误!退出并显示错误代码:128

\n
\n

Rek*_*vni 0

从你的 CI 脚本中我可以看出,变量语法应该是:

image: tmaier/docker-compose:latest
  variables:
    CI_JOB_TOKEN: $CI_JOB_TOKEN
Run Code Online (Sandbox Code Playgroud)

$CI_JOB_TOKEN,不是${CI_JOB_TOKEN}

您也不需要使用该variables部分来定义CI_JOB_TOKEN,只需$CI_JOB_TOKEN在需要的地方使用即可,因为它已经是预定义变量

文档来看。