2017-04-06 6 views
6

Linux上でgitlab-runnerを使用してプロジェクトをローカルにビルドしようとしています。Gitlabランナーローカルビルド - 非TTYデバイスからのログイン

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" 

残念なことに私の試みは「ドッカーログイン」が非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 

私の質問は、誰かがこの問題と、succesfunllyビルドを実行する方法につまずいていますか?

+0

でコマンドecho $CI_JOB_TOKENが含まれている場合、あなたの変数を出力しようとすることでこれを確認することができます。 'gitlab-ci-token'と' $ CI_JOB_TOKEN'の二重引用符については確かですか?たぶん資格情報がそれらのために誤解されているとログインが対話モードに戻って落ちる??? – Jawad

+0

引用符を取り除くと、 "flagに引数が必要です: 'p' in -p"、引用符の使用が正しいと推測しています。 – asdfgh

答えて

3

ほとんどの場合、作業中のプロジェクトには$CI_JOB_TOKEN$CI_REGISTRYの変数が指定されていない可能性があります。変数はで、は共有されておらず、プロジェクトあたりしか設定されていないことに注意してください。

エラーメッセージ

「フラグは、引数必要があります:-pで 『P』」遭遇理由でもあります、あなたが引用符なしドッカログインを行うにしようとすると、

をそうでなければ$CI_JOB_TOKENが変数として認識されないので、それは正しい方法ですですが、それは単なる2つの引用符、ドル記号と文字列 "CI_JOB_TOKEN"からなる文字列です。

あなたの変数が設定されていないと仮定すると、あなたは

docker login -u "gitlab-ci-token" -p $CI_JOB_TOKEN $CI_REGISTRY 

変数が評価されているコマンドを実行しようと、あなたのコマンドは、本質的にそのようになっています

docker login -u "gitlab-ci-token" -p 

-pフラグが続いていませんそのため、ドッカーは対話型ログインを初期化しようとします。

あなたは、あなたがコマンドで資格情報を提供しているので、それは対話モードに入るべきではない、あなたの.gitlab-ci.yml

関連する問題