2017-04-06 26 views
6

मैं लिनक्स पर गिटलैब-धावक का उपयोग करके स्थानीय रूप से अपनी परियोजना का निर्माण करने की कोशिश कर रहा हूं।गिटलाब-धावक स्थानीय निर्माण - गैर टीटीवाई डिवाइस से लॉगिन

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 

मेरा प्रश्न किसी ने इस मुद्दे पर ठोकर खाई है और कैसे सफलतापूर्वक निर्माण करने के लिए?

+0

इसके बाद से आप आदेश में साख प्रदान कर रहे हैं इंटरैक्टिव मोड में जाने नहीं करना चाहिए में आदेश echo $CI_JOB_TOKEN शामिल हैं। क्या आप 'gitlab-ci-token' और '$ CI_JOB_TOKEN' के आस-पास के उन दोहरे उद्धरणों के बारे में निश्चित हैं? हो सकता है कि क्रेडेंशियल्स का गलत अर्थ है क्योंकि लॉगिन और इंटरैक्टिव मोड पर वापस आ जाता है ??? – Jawad

+0

उद्धरणों से छुटकारा पाने से "ध्वज को एक तर्क की आवश्यकता होती है: 'पी' इन-पी", इसलिए मैं अनुमान लगा रहा हूं कि उद्धरणों का उपयोग सही है। – asdfgh

उत्तर

3

अधिकतर संभावना है कि आपने जिस परियोजना पर काम कर रहे हैं, उसके लिए आपने $CI_JOB_TOKEN और $CI_REGISTRY चर निर्दिष्ट नहीं किए हैं। ध्यान दें कि चर साझा नहीं हैं और केवल प्रति परियोजना सेट हैं!

भी है यही कारण है कि आप त्रुटि संदेश मिलता

"झंडा एक बहस की जरूरत है: 'पी' -p में"

जब आप उद्धरण के बिना डोकर लॉगिन करने की कोशिश, जो सही तरीका है क्योंकि अन्यथा $CI_JOB_TOKEN को एक चर के रूप में पहचाना नहीं गया है, लेकिन यह केवल एक स्ट्रिंग है जिसमें दो उद्धरण, एक डॉलर का चिह्न और वर्णों का अनुक्रम "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

संबंधित मुद्दे