我正在尝试在 Linux 上使用 gitlab-runner 在本地构建我的项目。
docker-build:
stage: build
image: docker:latest
script:
- docker login -u "gitlab-ci-token" -p "$CI_JOB_TOKEN" $CI_REGISTRY # user "gitlab-ci-token" is automatically created by GitLab
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME" target/
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
不幸的是,我的尝试以关于“docker login”无法从非 TTY 设备执行交互式登录的错误结束。
$ gitlab-ci-multi-runner exec docker --docker-privileged docker-build
Running with gitlab-ci-multi-runner 1.11.1 (a67a225)
on ()
Using Docker executor with image docker:latest ...
Starting service docker:dind ...
Pulling docker image docker:dind ...
Waiting for services to be up and running...
Pulling docker image docker:latest ...
Running on runner--project-1-concurrent-0 via vanqyard...
Cloning repository...
Cloning into '/builds/project-1'...
done.
Checking out 70187b2d as docker-basic-conf...
Skipping Git submodules setup
Checking cache for docker-build/docker-basic-conf...
Successfully extracted cache
$ docker login -u "gitlab-ci-token" -p "$CI_JOB_TOKEN" $CI_REGISTRY
Error: Cannot perform an interactive login from a non TTY device
ERROR: Job failed: exit code 1
FATAL: exit code 1
我的问题是有没有人偶然发现这个问题以及如何成功地执行构建?
原文由 asdfgh 发布,翻译遵循 CC BY-SA 4.0 许可协议
可能与这里的问题无关,但有些人在尝试
docker login
从 Windows 上的 Linux 类终端(如 Git bash 或 Docker 快速启动终端 甚至 Cygwin )时可能会遇到完全相同的消息。这里的技巧是使用
winpty docker login