首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang与Gitlab连续集成

Golang与Gitlab连续集成
EN

Stack Overflow用户
提问于 2019-07-19 14:56:10
回答 1查看 722关注 0票数 0

我即将在GitlabGolang软件中实现一个完整的(没有测试阶段)的持续集成。

当我试图在docker login步骤中构建Docker映像时,它失败了。

这是我的.gitlab-ci.yml

代码语言:javascript
复制
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过程中。显然,他们不是。

解决这一问题的最佳办法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 19:25:52

我的答案假设您正在为CI和注册表使用GitLab.com (基于上面的.gitlab-ci.yml示例中的registry.gitlab.com )。

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

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

$CI_REGISTRY_PASSWORD是一个短暂的令牌,仅在工作期间有效。您可以在对容器注册表文档的身份验证中了解更多信息。

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

https://stackoverflow.com/questions/57115037

复制
相关文章

相似问题

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