首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在gitlab上的Dockerfile中包含CI_JOB_TOKEN?

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

Stack Overflow用户
提问于 2018-05-24 13:59:36
回答 2查看 6.4K关注 0票数 6

我遇到了一个问题,我似乎很难在CI/CD流中传递CI_JOB_TOKEN,以便从我的Dockerfile下载私有的gitlab模块。

我的文件看起来是这样的:

gitlab-ci.yml

代码语言:javascript
复制
image: tmaier/docker-compose:latest
  variables:
    CI_JOB_TOKEN: ${CI_JOB_TOKEN}
​
stages:
  - build
​
build:
  stage: build
  script:
    - docker-compose build --build-arg CI_JOB_TOKEN=${CI_JOB_TOKEN}
    - docker-compose push --arg CI_JOB_TOKEN=${CI_JOB_TOKEN}

docker-compose.yml

代码语言:javascript
复制
services:
  qa-service:
    build:
      context: .
      args:
        PORT: 3000
        CI_JOB_TOKEN: ${CI_JOB_TOKEN}

文档

代码语言:javascript
复制
FROM ubuntu:latest
​
ARG CI_JOB_TOKEN
RUN npm install \
    "git+https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.example.com/xxx/yyy.git"

我一直在犯这个错误

国家预防机制错误!执行时出错: npm ERR!/usr/bin/git ls-远程-h -t 令牌%7D@gitlab.example.com/xxx/yyy.git 国家预防机制错误!国家预防机制错误!远程: HTTP Basic:拒绝访问 国家预防机制错误!致命:“令牌%7D@gitlab.example.com/xxx/yyy.git/”的身份验证失败 国家预防机制错误!国家预防机制错误!与错误代码一起退出: 128

EN

回答 2

Stack Overflow用户

发布于 2018-11-21 11:42:29

不确定这是否仍然相关,但我已经发现,由于某种原因,还必须声明名为CI_JOB_TOKEN的ENV (在本例中是与maven结合使用),否则将出现身份验证失败,例如当试图访问GitLab maven存储库时。

作为解决办法,我建议使用多阶段构建,这样CI_JOB_TOKEN就不会出现在最终的映像中,即:

代码语言:javascript
复制
ARG CI_JOB_TOKEN

FROM maven:alpine as build

ENV CI_JOB_TOKEN=$CI_JOB_TOKEN

COPY . .

RUN mvn package -s ci_settings.xml

FROM java:8-jre-alpine

COPY --from=build PATH/TO/app.jar /app.jar

CMD exec java -jar /app.jar

通过这种方式,CI_JOB_TOKEN被成功地识别为一个环境变量,并且在试图访问GitLab maven存储库时,我不再收到401错误。

我假设这也将解决您的问题,这可能不是对GitLab CI的限制,而是与在Docker中构建参数的方式有关。

当然,您必须根据特定的用例调整这些步骤。

票数 3
EN

Stack Overflow用户

发布于 2018-05-24 14:20:35

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

代码语言:javascript
复制
image: tmaier/docker-compose:latest
  variables:
    CI_JOB_TOKEN: $CI_JOB_TOKEN

$CI_JOB_TOKEN,而不是${CI_JOB_TOKEN}

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

来自文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50511278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档