我即将在Gitlab和Golang软件中实现一个完整的(没有测试阶段)的持续集成。
当我试图在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过程中。显然,他们不是。
解决这一问题的最佳办法是什么?
发布于 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是一个短暂的令牌,仅在工作期间有效。您可以在对容器注册表文档的身份验证中了解更多信息。
https://stackoverflow.com/questions/57115037
复制相似问题