7

मेरे पास 3 पायथन पैकेज proj1, proj12 और proj13 हैं। proj12 और proj13proj1 (from proj1.xxx import yyy के साथ) पर निर्भर करता है।परस्पर निर्भर व्हील के परीक्षण/निर्माण का प्रबंधन करने के लिए गिटलाब-सीआई का उपयोग कैसे करें

3 परियोजनाएं निजी गिटलैब उदाहरण पर हैं, प्रत्येक के पास इसका अपना .gitlab-ci है।

में proj1http://gitlab.me.com/group/proj1/.gitlab-ci.yml हम unittest चलाने और एक पहिया एक विरूपण साक्ष्य ::

# http://gitlab.me.com/group/proj1/.gitlab-ci.yml 
image: python:2 
mytest: 
    artifacts: 
    paths: 
    - dist 
    script: 
    - apt-get update -qy; apt-get install -y python-dev python-pip 
    - pip install -r requirements.txt 
    - python setup.py test 
    - python setup.py bdist_wheel 
look: 
    stage: deploy 
    script: 
    - ls -lah dist 

proj12 और proj13 में जैसे के लिए के रूप में सामने आ रहा बनाने http://gitlab.me.com/group/proj12/.gitlab-ci.yml हम भी परीक्षण करना चाहते हैं, लेकिन मुझे इसे चलाने के लिए proj1 पहिया स्थापित करने की आवश्यकता है।

सभी 3 परियोजनाएं एक ही गिटलैब निजी समूह में हैं।

यह करने के लिए gitlab तरीका क्या है?

  • एक artifact
      इस मामले मैं कैसे फोन/ http://gitlab.me.com/group/proj12/.gitlab-ci.yml में विरूपण साक्ष्य प्राप्त करने के लिए पता नहीं है में
    • साथ proj12 को proj1 पहिया पारित करने के लिए? यह वही गिटलैब है, एक ही समूह है, लेकिन एक अलग परियोजना है।
  • proj12/.gitlab-ci.yml में proj2 क्लोन करने के लिए ssh_keys स्टोर करने के लिए एक gitlab गुप्त चर का प्रयोग करें?
    • https://gitlab.com/gitlab-org/gitlab-ce/issues/4194
    • से संबंधित इस तथ्य का लाभ नहीं ले करता है कि proj1, proj12 और proj13 ही gitlab और एक ही समूह, व्यक्ति जो करने के लिए प्रमाणिकता के रूप में एक परियोजना के लिए निर्माण कर में हैं अन्य शामिल हैं। सभी 3 उपयोगकर्ता निजी टोकन से जुड़े हुए हैं।

मैं devpi या समाधान की तरह pypiserver को तैनात करने के लिए से बचने के लिए प्रयास करें।

उत्तर

1

आप एक विशिष्ट निर्माण आईडी जानने के बिना एक Git रेफरी (शाखा, टैग, आदि) के आधार पर कलाकृतियों के लिंक साझा करना दो तरीके हैं आप यह कर सकते हैं:

  • Pass the object from previous build using the artifacts (एक ही परियोजना के अंदर काम करता है केवल)
  • आप के साथ एक डोकर छवि का निर्माण आर पैकेज एक गिट जॉब में पूर्व-स्थापित, इसे अंतर्निर्मित रजिस्ट्री में संग्रहीत करें और अपनी अन्य परियोजनाओं में निर्माण चलाने के लिए इसका उपयोग करें।
  • क्लोन भंडार

मैं तब से एक विरूपण साक्ष्य के रूप में पारित करने की सलाह देंगे कि आप इसे पाइपलाइन आप चल रहे हैं में वास्तव में निर्माण होगा। क्लोनिंग के लिए, AFAIK आपको submodules क्लोन करते समय किसी भी कामकाज की आवश्यकता नहीं है, लेकिन अन्य भंडारों को क्लोन करने के लिए मैं एसएसओ तैनाती कुंजी के साथ जाऊंगा क्योंकि यह एक रेपो से जुड़ा हुआ है और उपयोगकर्ता निजी टोकन की तरह नहीं है।

+0

मैंने आपकी टिप्पणियों के साथ अपने प्रश्न को प्रभावित किया है, मुझे नहीं पता कि हम किसी अन्य परियोजना के 'gitlab-ci.yml'' में एक परियोजना के निर्माण में बनाए गए आर्टिफैक्ट का उपयोग कर सकते हैं। – user3313834

+0

@ user3313834 आप आर्टिफैक्ट को पथ के रूप में आपूर्ति करते हैं, यह आपके अगले निर्माण में उसी पथ में उपलब्ध है। आप पथ दूर है इसलिए बस अपने अगले निर्माण में पहले चरण के रूप में 'ls dist' करें और आप इसे देखेंगे। –

+0

हां मैंने वास्तव में आर्टिफैक्ट गिटलैब दस्तावेज़ीकरण को ध्यान से पढ़ा है, आर्टिफैक्ट उसी कंटेनर के पथ ** में ** ** एक ही प्रोजेक्ट में ** ** ** ** iit ** gitlab-ci.yml के काम से पहुंचा जा सकता है। हमें प्रोजे 12 में प्रोजेक्ट 1 में उपलब्ध आर्टिफैक्ट की आवश्यकता है, एक अलग गिटलैब प्रोजेक्ट, एक अलग गिट रिपोजिटरी। मुझे शायद कुछ याद आती है लेकिन प्रलेखन जो आप एक ही परियोजना के काम के साथ आर्टिफैक्ट साझा करते हैं। – user3313834

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