Golang和Gitlab持续集成

埃尔温:

即将使用Golang软件Gitlab中实现完整的(无需测试阶段)持续集成

当我尝试在该docker login步骤中构建Docker映像时,它失败

这是我的.gitlab-ci.yml

stages:
  - build

variables:
  REGISTRY: registry.gitlab.com
  GO_PROJECT: mysoftware

build_golang_binary:
  image: golang:latest
  stage: build
  before_script:
    - mkdir -p ${GOPATH}/src/${GO_PROJECT}
    - cp -r ${CI_PROJECT_DIR}/* ${GOPATH}/src/${GO_PROJECT}/
    - cd ${GOPATH}/src/${GO_PROJECT}
    - go get
  script:
    - cd ${GOPATH}/src/${GO_PROJECT}
    - go build

build_docker_image:
  image: docker:latest
  stage: build
  script:
    - docker login $REGISTRY
    - docker build --no-cache -t ${REGISTRY}/me/${GO_PROJECT} .
    - docker push ${REGISTRY}/me/${GO_PROJECT}

这是我得到的错误: $ docker login $REGISTRY Error: Cannot perform an interactive login from a non TTY device

我认为凭证将提供给此CI流程。显然,它们没有。

解决此问题的最佳选择是什么?

提请祝福:

我的回答假设你使用GitLab.com两个CI和注册(根据registry.gitlab.com你的是.gitlab-ci.yml上面的例子。

您可以利用GitLab CI作业中可用的几个环境变量来对GitLab注册中心进行身份验证:

  • docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

$CI_REGISTRY_PASSWORD是一个短暂的令牌仅适用于你的工作的持续时间。您可以在验证到Container Registry文档中了解更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章