GitHub क्रियाएं: अपने CI / CD वर्कफ़्लो को कैसे सुधारें

GitHub Actions सबसे शक्तिशाली उपकरणों में से एक है जिसका उपयोग आप कर सकते हैं यदि आप इस सर्विस रिपॉजिटरी पर हमारा कोड स्टोर कर रहे हैं। विचार सरल है, आप एक जटिल वर्कफ़्लो डिज़ाइन कर सकते हैं जिसमें स्वचालित कार्यों (जिन्हें क्रियाएं कहा जाता है) को सक्रिय किया जा सकता है और जब आपकी रिपॉजिटरी में एक कमिट किया जाता है तो उसे चलाया जा सकता है।

GitHub का विकास एक साधारण वितरित गिट रिपॉजिटरी से कुछ बड़ा है। कार्य में क्लाउड कंप्यूटिंग शामिल है, इसलिए आप छवियों का निर्माण कर सकते हैं, विभिन्न रिपॉजिटरी में धक्का दे सकते हैं, क्लाउड प्रदाताओं को ऑर्केस्ट्रेट कर सकते हैं या जो कुछ भी आपको अपनी तरफ से कंप्यूटिंग संसाधनों के बिना करने की आवश्यकता है, इसलिए किसी भी सर्वर या स्थानीय मशीन की आवश्यकता है। इससे भी बेहतर, आप चुन सकते हैं कि किस तरह के ऑपरेटिंग सिस्टम का उपयोग कार्रवाई चलाने के लिए किया जाएगा: उबंटू लिनक्स, विंडोज या मैक ओएस एक्स।

GitHub की अलग-अलग आधिकारिक कार्रवाइयाँ हैं, लेकिन उन्होंने एक मार्केटप्लेस भी लॉन्च किया है जहाँ आप समुदाय द्वारा बनाई गई कई कार्रवाइयाँ पा सकते हैं, इसलिए अपने स्वयं के वर्कफ़्लो के साथ एकीकरण खरोंच से पूरे कोड को लिखने की तुलना में तेज और आसान है। अगले चरणों के दौरान दोनों का उपयोग करेंगे: आधिकारिक और समुदाय वाले।

गितुब क्रियाओं के साथ कैसे शुरू करें: डॉकर चित्रों का निर्माण, उन्हें डॉकर हब में भेजें और उन्हें एडब्ल्यूएस ईसीएस पर तैनात करें।

इस परिदृश्य की कल्पना करें, आप डॉकटर कंटेनरों का उपयोग करके अपना ऐप विकसित कर रहे हैं, अपना कोड GitHub पर संग्रहीत कर रहे हैं, अपनी छवि को Docker Hub पर धकेल रहे हैं और अपने क्लाउड प्लेटफ़ॉर्म पर चलाने के लिए AWS ECS पर ऐप को तैनात कर रहे हैं।

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

यदि आपके पास एक नहीं है, तो सबसे पहले, अपने रिपॉजिटरी में डॉकरफाइल अपलोड करें। फिर, अपने GitHub रिपॉजिटरी में जाएं और Actions पर क्लिक करें। अपनी रिपॉजिटरी की सामग्री के आधार पर आपको एक अलग सुझाव प्राप्त होगा, डॉकर छवि का निर्माण, गो प्रोजेक्ट का निर्माण करना या केवल सबसे लोकप्रिय निरंतर एकीकरण वर्कफ़्लोज़। सिफारिशों को छोड़ें और अपने आप को एक वर्कफ़्लो सेट अप करने के लिए जाएं

डिफ़ॉल्ट main.yml नाम के आपके _repository / .github / वर्कफ़्लोज़ पथ का उपयोग करके एक नई फ़ाइल बनाई जाएगी, लेकिन जैसा आप चाहें, आप इसका नाम बदल सकते हैं। हमारा पहला कदम डॉकटर हब में छवि प्रकाशित करेगा ताकि आप dockerhub.yml सेट कर सकें।

कोड एक हैलो विश्व नमूना चला रहा है, जिससे आप सभी चरणों को हटा सकते हैं। जैसा कि आप देख सकते हैं, दाईं ओर की खिड़की बाज़ार और प्रलेखन टैब दिखाती है। यह हमेशा रहेगा कि आप एक एक्शन फ़ाइल को संपादित कर रहे हैं।

सर्च फील्ड बॉक्स में जाएं और डॉकर टाइप करें और इगो द्वारा पब्लिश डॉकर चुनें। यह कार्रवाई हमारी डॉकरीफाइल का निर्माण करने और निर्मित छवि को डोकर हब में धकेलने वाली है। आपको बस सामग्री को कॉपी करने, अपनी फ़ाइल में पेस्ट करने और अपने स्वयं के मूल्यों के साथ चर भरने की आवश्यकता है, जैसे कि कुछ पाने के लिए:

नाम: डॉकर हब पर बनाएँ और प्रकाशित करें: [पुश] जॉब: बिल्ड: रन-ऑन: ऑबंटु-लेटेस्ट स्टेप्स: - उपयोग: एक्शन / चेकआउट @ मास्टर - नाम: पब्लिश डॉकर यूज़: एल्गोहर / पब्लिश-डॉकटर-जीथब-एक्शन @ २.११ के साथ: # उस छवि का नाम जिसे आप नाम देना चाहते हैं: क्लाउडब्लॉग / गीथूबोट्स: v7 # रजिस्ट्री उपयोगकर्ता नाम के लिए लॉगिन उपयोगकर्ता नाम: $ {{Secrets.DOCKERHUB_USER}} # रजिस्ट्री पासवर्ड के लिए लॉगिन पासवर्ड: $ { {secret.DOCKERHUB_PASS}} # कस्टम रजिस्ट्री को पुश करने के लिए # रजिस्ट्री का उपयोग करें #registry: # वैकल्पिक # अतिरिक्त छवि को पुश करने के लिए स्नैपशॉट का उपयोग करें #snapshot: # वैकल्पिक # डॉकफाइल का उपयोग करें जब आप स्पष्ट रूप से डॉकरफाइल #dockerfile का निर्माण करना चाहेंगे: Dockerfile # जब आप #workdir के निर्माण के लिए निर्देशिका बदलना चाहते हैं तो वर्कडायर का उपयोग करें: # वैकल्पिक # बिल्ड बिल्डग्स जब आप बिल्ड-आर्ग्स #buildargs के रूप में पर्यावरण चर की एक सूची पारित करना चाहते हैं: # वैकल्पिक # बड़ी छवि होने पर कैश का उपयोग करें, कि आप जब आप पु करना चाहते हैं तो केवल आंशिक रूप से # कैश का उपयोग करें: # वैकल्पिक # टैग_नाम का उपयोग करें sh टैग / उनके git नाम से जारी #tag_names: $ (दिनांक +% s)

यह कार्रवाई हमारे डॉकफाइल को प्राप्त करने के लिए हो रही है, छवि क्लाउडब्लॉग / गीथूबोट्स का निर्माण करें: v7 और इसे डॉकर हब पर धकेलें।

सुरक्षा टिप: आपको किसी भी फ़ाइल पर अपना उपयोगकर्ता नाम और पासवर्ड लिखने से बचना चाहिए, यहां तक ​​कि निजी रिपॉजिटरी पर, इसके बजाय रहस्यों का उपयोग करना चाहिए। आपको बस उन्हें सेटिंग्स पर संग्रहीत करने की आवश्यकता है → रहस्य और वाक्यविन्यास का उपयोग करके उन्हें संदर्भ दें:

$ {{secret.MYSERVICE_PASS}}

AWS ECR और ECS के साथ काम करना

हमारा दूसरा चरण छवि को एडब्ल्यूएस ईसीआर में तैनात किया जाएगा। हम एक ही फ़ाइल पर अधिक चरण जोड़ सकते हैं या हम अपनी प्राथमिकताओं के आधार पर एक नई फ़ाइल बना सकते हैं। जैसा कि दोनों प्रक्रियाएं स्वतंत्र हैं मैं दो वर्कफ़्लोज़ प्राप्त करने के लिए एक अलग फ़ाइल बनाना पसंद करता हूं, यहां तक ​​कि ट्रिगर भी समान (एक प्रतिबद्ध) होगा, इसलिए दोनों समानांतर में चलेंगे।

फिर से क्रिया पर जाएं और अपने बाईं ओर नए वर्कफ़्लो पर क्लिक करें। इस बार हम एक आधिकारिक कार्रवाई का उपयोग करने जा रहे हैं, इसलिए अमेज़ॅन ईसीएस में तैनाती की खोज करें और इस वर्कफ़्लो को सेट करें पर क्लिक करें।

आपको बस पाठ के निर्देशों का पालन करते हुए अपने AWS पर्यावरण से संबंधित अपने स्वयं के मूल्यों को बदलना होगा। फिर आपको कार्य परिभाषा फ़ाइल को अपने GitHub रिपॉजिटरी में json फॉर्मेट में कॉपी करना होगा। आवश्यक json कोड प्राप्त करने के लिए बस AWS ECS पर अपनी कार्य परिभाषा खोलें और JSON टैब पर क्लिक करें:

अंतिम क्रिया फ़ाइल कुछ इस के समान होनी चाहिए:

ऑन: पुश: शाखाएँ: - मास्टर नाम: अमेजन ईसीएस जॉब्स के लिए नियोजित करें: नाम: तैनाती: रन-ऑन: ubuntu-latest steps: - नाम: चेकआउट उपयोग: क्रियाएँ / चेकआउट @ v1 - नाम: कॉन्फ़िगर AWS क्रेडेंशियल्स का उपयोग करता है: aws -नीलामी / कॉन्फ़िगर-aws-क्रेडेंशियल्स @ v1 के साथ: aws-access-key-id: $ {{secret.AWS_ACCESS_KEY_ID}} aws-secret-access-key: $ {{secret.AWS_SECRET_ACCESS_KEY}} aws- क्षेत्र: eu- क्षेत्र West-1 - नाम: Amazon ECR आईडी पर लॉगिन करें: लॉगिन-एक्स्ट्रा उपयोग: aws-actions / amazon-ecr-login @ v1 - नाम: Amazon ECR आईडी में बिल्ड, टैग और पुश इमेज: बिल्ड-इमेज env: RCR_REGISTRY: $ {{steps.login-ecr.outputs.registry}} ECR_REPOSITORY: githubactions IMAGE_TAG: नवीनतम रन: | # एक डॉकटर कंटेनर का निर्माण करें और # इसे ECR में धकेलें ताकि यह ECS पर तैनात हो सके। docker build -t $ ECR_REGISTRY / $ ECR_REPOSITORY: $ IMAGE_TAG docker पुश $ ECR_REGISTRY / $ ECR_REPOSITORY: $ IMAGE_TAG प्रतिध्वनि ":: सेट-आउटपुट नाम = छवि :: $ ECR_REGISTRY / $ ECR_REPOSITORY: $ IMAGE_TAG" - नाम: Amazon ECS कार्य आईडी में नई छवि आईडी भरें: कार्य आईडी: def उपयोग: aws-actions / amazon-ecs-प्रस्तुत करना-कार्य-परिभाषा @ v1 के साथ: कार्य-परिभाषा: mytaskdef.json कंटेनर-नाम: क्लाउडब्लॉग छवि: $ {{steps.build-image.outputs.isage}} - नाम : अमेजन ECS कार्य परिभाषा का उपयोग करें: aws-actions / amazon-ecs-तैनात-कार्य-परिभाषा @ v1 के साथ: कार्य-परिभाषा: $ {{steps.task-def.outputs.task-परिभाषा}} सेवा: myapp क्लस्टर क्लाउडब्लॉग प्रतीक्षा-के लिए सेवा-स्थिरता: सच है

आप देख सकते हैं कि एक ही वर्कफ़्लो की परिभाषा फ़ाइल में कई क्रियाओं को बुलाया जा रहा है। अधिकांश चरण एक अन्य कार्रवाई के लिए संदर्भ हैं जैसे लॉगिन या कार्य परिभाषा को तैनात करना लेकिन आप डूइंग क्ली का उपयोग करके बिल्डिंग इमेज की तरह कमांड भी चला सकते हैं।

बस डिफ़ॉल्ट नाम के साथ फाइल को सहेजें और बदलाव करें। क्रियाओं पर जाएं और आप आउटपुट देख पाएंगे। यदि सब कुछ ठीक था, तो आपको कुछ इस तरह से मिलना चाहिए:

यदि आपको कुछ त्रुटियां मिलती हैं, तो आप हर चरण के विवरण पर जा सकते हैं और आउटपुट की जांच कर सकते हैं:

जब सब कुछ ठीक चल रहा था, तो आपको डॉकर हब और एडब्ल्यूएस रिपॉजिटरी पर अपनी छवि और अपने एडब्ल्यूएस सीसीएस वातावरण में चल रहे ऐप को देखना चाहिए:

आगे जाने के लिए बस अपनी वर्तमान एक्शन फ़ाइल को संपादित करें और नए कार्यों की तलाश करें (या अपना खुद का बनाएं)। आप अपने वर्कफ़्लो में और कदम जोड़ सकते हैं जैसे कि लैम्ब्डा फ़ंक्शन को अपडेट करें, एडब्ल्यूएस पर ट्रिगर उत्पन्न करने के लिए एक एस 3 बाल्टी में एक फ़ाइल की प्रतिलिपि बनाएँ या एक ही समय में कई क्लाउड प्रदाताओं को तैनात करें और एज़्योर और जीसीपी संबंधित कार्यों का उपयोग करें।