मेरे पास एक GitLab CI कॉन्फ़िगरेशन है जो अनिवार्य रूप से इस तरह दिखता है:

build:
  stage: build
  image: my_image:latest
  script:
    - /var/scripts/build_python_package.sh

यह डिजाइन द्वारा बेहद सरल है - विचार यह है कि हमारे संगठन में कोई भी पाइथन पैकेज वाला एक नया भंडार बना सकता है, इसमें न्यूनतम .gitlab-ci.yml पाइपलाइन कॉन्फ़िगरेशन डाल सकता है, और यह पाइथन के निर्माण और परीक्षण के लिए हमारी "मानक प्रक्रिया" को सक्षम बनाता है पैकेज, develop और master शाखाएं हमारे आर्टिफैक्ट रिपॉजिटरी (नेक्सस में) आदि में प्रकाशित हो जाती हैं।

अब मैं इस सेटअप में कुछ और चीजें जोड़ना चाहूंगा, उदा।

  • pip के माध्यम से या तेजी से निर्माण समय के लिए स्थापित पैकेज निर्भरताओं का कैशिंग (यह वास्तव में पायथन के लिए एक बड़ी समस्या नहीं है, लेकिन हमारे पास समान सेटअप का उपयोग करके आर पैकेज भी हैं, और आर पैकेज हमेशा स्रोत से बनाए जाते हैं, इसलिए निर्माण का समय बहुत लंबा हो जाता है।)
  • कलाकृतियों के लिए एक निर्देशिका का पदनाम (जब develop या master पर नहीं है, लेकिन आप अभी भी पैकेज आर्टिफैक्ट उपलब्ध कराना चाहते हैं)

ऐसा लगता है कि cache या artifacts CI कॉन्फ़िगरेशन के लिए - लेकिन यह अवांछनीय है, क्योंकि हमारे पास ऐसी दर्जनों परियोजनाएं हैं, और हम चाहते हैं कि हर बार जब हम अपनी मानक निर्माण प्रक्रिया में सुधार के साथ आए तो प्रत्येक प्रोजेक्ट को अपडेट किए बिना उन्हें बेहतर व्यवहार मिले।

आदर्श रूप से, हमारे पास build_python_package.sh स्क्रिप्ट किसी तरह GitLab को ये तथ्य बताएगी। उदा. "मैंने अभी इस निर्देशिका में कलाकृतियां बनाई हैं" या "मैंने कुछ निर्भरता पैकेज डाउनलोड/निर्मित किए हैं और उन्हें कैश किया जाना चाहिए"। क्या ऐसा करना संभव है?

असफल होने पर, क्या हमारे सभी पैकेज कॉन्फ़िगरेशन फ़ाइलों में एक सामान्य कॉन्फ़िगरेशन को "आयात" करने का कोई तरीका है, इसलिए हम कई परियोजनाओं के आसपास समान कॉन्फ़िगरेशन फैलाने के बजाय केंद्रीय रूप से कॉन्फ़िगरेशन बनाए रख सकते हैं?

1
Ken Williams 23 अक्टूबर 2018, 06:50

1 उत्तर

सबसे बढ़िया उत्तर

मुझे लगता है कि आप गिटलैब प्रीमियम का उपयोग कर रहे हैं, उस स्थिति में, आप केंद्रीय कॉन्फ़िगरेशन भंडार के रूप में सार्वजनिक भंडार का उपयोग कर सकते हैं, फिर वहां से आपको जो चाहिए उसे शामिल करें।

केवल नुकसान जो मुझे दिखाई दे रहे हैं: - आपके संगठन के अंदर किसी के द्वारा पठनीय सार्वजनिक भंडार - यदि सार्वजनिक भंडार पर कोड दूषित है, तो इसका उपयोग करने वाली सभी पाइपलाइन टूट गई हैं

https://docs.gitlab.com/ee/ci/yaml पर एक नज़र डालें /#शामिल करें

1
M. Falzone 23 अक्टूबर 2018, 06:21