6

मैं अपने आवेदन के लिए परिनियोजन पाइपलाइन स्वचालित करने की कोशिश कर रहा हूं। यहाँ स्वचालन वास्तुकला है, मैं के साथ आया था: Automation Architectureएडब्ल्यूएस कोडबिल्ड/कोडपलाइनलाइन सर्वर रहित ढांचे के साथ

आप देख सकते हैं मैं अपने तैनाती को स्वचालित करने के codePipeline और codeBuild उपयोग कर रहा हूँ। मेरा बैकएंड Serverless Framework पर आधारित है, जो sls deploy कमांड पर फाम्बायर पर लैम्ब्डा फ़ंक्शंस को तैनात करता है। यही वजह है कि मैंने पारंपरिक तैनाती करने के लिए कोड का उपयोग नहीं किया था। buildspec.yml फ़ाइल इस तरह दिखता है:

version: 0.1 

phases: 
    install: 
    commands: 
     – apt-get -y update 
     – npm install -g [email protected] 
    build: 
    commands: 
     – cd nj2jp/serverless && npm install 
    post_build: 
    commands: 
     – serverless deploy –verbose 

artifacts: 
    files: 
    – serverless.yml 
    discard-paths: yes 

अब, मैं को 3 संबंध में प्रश्न है CodeBuild और Serverless:

प्रश्न 1: आदेश एक फ़ाइल पर sls deploy निर्भर करता है config.yml बुलाया जिसमें डीबी पासवर्ड जैसे रहस्य शामिल हैं। इस फ़ाइल को गिट में चेक नहीं किया जाएगा। कोडबिल्ड में config.yml को शामिल करने का सबसे अच्छा तरीका क्या है?

प्रश्न 2:रोलबैक एडब्ल्यूएस साथ किया जा सकता, अगर हम codeDeploy का प्रयोग पारंपरिक EC2 अनुप्रयोगों को तैनात करने की है। सर्वर रहित के मामले में, हम कोड का उपयोग नहीं कर रहे हैं और सर्वर रहित रोलबैक सुविधाओं का भी समर्थन करता है। हम कोडपिपलाइन के भीतर सर्वर रहित रोलबैक का लाभ कैसे उठा सकते हैं?

प्रश्न 3: codePipeline ट्रिगर जब एक पुल अनुरोध होता है। मैंने कुछ पोस्ट कह रही हैं, यह कोडपलाइन द्वारा समर्थित नहीं है। लेकिन उन पदों पिछले साल से थे, क्या पुल अनुरोध अब कोडपलाइन द्वारा समर्थित है?

हैक जवाब (सही नहीं है, लेकिन काम करता है आप से बेहतर जवाब की आवश्यकता है।।)

उत्तर 1:config.yml फ़ाइल एक निजी S3 बाल्टी में बचाया जा सकता है और codeBuild को खींचा जा सकता है pre-build सेटअप के हिस्से के रूप में या हम कोडबिल्ड के एनवी चर के सभी रहस्य जोड़ सकते हैं। मुझे दूसरा विकल्प पसंद नहीं है, क्योंकि मैं सभी परिवेशों में लगातार होना चाहता हूं। इस समस्या के लिए कोई बेहतर समाधान?

उत्तर 2: मैं इसके लिए एक हैक नहीं सोच सकता। आप से जवाब के लिए देख रहे हैं।

उत्तर 3: मैं पुल अनुरोधों के लिए codePipeline को गति प्रदान करने के लिए कुछ ब्लॉग पोस्ट [APIGateway + Lambda + S3] का उपयोग भर में आया था। लेकिन मुझे लगता है, इस सुविधा को एक बॉक्स के बाहर के रूप में प्रदान किया जाना है। क्या इस सुविधा के लिए कोडपलाइन पर कोई अपडेट है?

उत्तर

3

प्रश्न 1

आप अपने config.yml, तो एक ही तरीका है यह काम करने के लिए साथ रहना चाहते हैं क्या आप पहले से ही कर रहे हैं, क्योंकि यह संस्करण नियंत्रित नहीं है के लिए इसी तरह हैक्स के माध्यम से है।

मेरा सुझाव है कि ईसी 2 पैरामीटर स्टोर में आपके पर्यावरण चर संग्रहीत किए जाएं, जिन्हें आप अपने कोडबिल्ड buildspec.yml में संदर्भित कर सकते हैं। ये चर में ${env:VARIABLE_NAME} का उपयोग कर पहुंच योग्य हैं।

स्थानीय विकास के लिए, आपको config.yml में संग्रहीत बनाम वास्तविक पर्यावरण चर का भी उपयोग करना चाहिए। direnv जैसे टूल्स इस पर बहुत अच्छे हैं।

प्रश्न 2

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

प्रश्न 3

CodePipelines एक एकल शाखा से जुड़े होते हैं तो यह पीआर शाखाओं पर काम करने के लिए, आप लेख आप का उल्लेख की तरह हैक्स क्या करना है। मैं एपीआई गेटवे + लैम्ब्डा + CodeBuild (कोई CodePipeline) का उपयोग कर ऐसा करने के लिए का सहारा लिया।

+0

अद्भुत उत्तर !! आपका जवाब पूरी तरह से समझ में आता है। बस उत्सुक, आप विभिन्न शाखाओं (प्रोड, देव और एसटीजी) में वातावरण (रहस्य) का प्रबंधन कैसे करते हैं। मैं '.env.prod',' .env.dev' और '.env.stg' जैसे प्रत्येक वातावरण के लिए एक स्पष्ट '.env' फ़ाइल का उपयोग कर रहा हूं। इन सभी को गिट में चेक नहीं किया गया है। –

+1

मेरे रहस्य ईसी 2 पैरामीटर स्टोर में संग्रहीत हैं। मेरा देव, स्टेजिंग और उत्पादन अलग एडब्ल्यूएस खातों का उपयोग कर रहे हैं। इसलिए, मैं आसानी से समान वैरिएबल नामों का उपयोग बिना संघर्ष के चिंता किए कर सकता हूं। – dashmug

+0

आह अच्छा !! लेकिन आप इसे स्थानीय पर्यावरण में कैसे प्रबंधित करते हैं? जैसे यह एक ही चर होने जा रहा है लेकिन अलग-अलग मान। क्या आप env फ़ाइल को वर्जन-कंट्रोल भी करते हैं? यदि हां, तो यह समझ में आता है। मुझे लगता है, यह निजी repos के लिए अच्छा है। –

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