কীভাবে AWS এ সার্ভারলেস সিআই / সিডি পাইপলাইন তৈরি করবেন

আমরা সকলেই বিশ্বাস করি যে অনুলিপি / পেস্ট বিতরণের দিনগুলি অতি দীর্ঘ। দুর্ভাগ্যক্রমে, এটি কিছু বিকাশকারীদের জন্য স্থাপনের পছন্দসই পদ্ধতিটি এখনও তা নয় এবং এটি। এটি এত খারাপ কেন আমি খুব সহজেই একটি সম্পূর্ণ নিবন্ধ লিখতে পারি, তবে আমি মনে করি এটি বেশ স্ব-ব্যাখ্যামূলক। সার্ভারলেস আর্কিটেকচারের দিকে প্রবণতার সাথে, সিআই / সিডি পাইপলাইনগুলি আপনার অ্যাপ্লিকেশনগুলির বিতরণে গুরুত্বপূর্ণ ভূমিকা পালন করে। আপনার পরবর্তী সার্ভারলেস প্রকল্পের জন্য তারা আমার শীর্ষ তিনটি টিপসে অন্তর্ভুক্ত রয়েছে।

আমি দীর্ঘদিন ধরে অবিচ্ছিন্ন একীকরণ এবং বিতরণে আগ্রহী এবং আমি কয়েক বছর আগে টিমসিটির সাথে প্রথমবারের মতো আমার পায়ের আঙ্গুলগুলি পানিতে ডুবিয়েছিলাম। আমাদের সিআই / সিডি পাইপলাইনের বেশিরভাগ অংশের জন্য আমরা আজও টিমসিটি ব্যবহার করি। টিমসিটি দুর্দান্ত কাজ করে এবং আমি কিছু মনে করি না তবে আমি কীভাবে আমাদের কাজের উন্নতি করতে পারি তা নিয়ে আমি সবসময়ই চিন্তা করি। এইগুলির মধ্যে একটি হ'ল আমরা আমাদের পাইপলাইনগুলি কোড হিসাবে তৈরি করতে পারি - এবং এটি এমন একটি বিষয় যা টিমসিটি তেমন ভাল নয়।

এডাব্লুএস থেকে উপলব্ধ সংহতকরণ এবং স্থাপনার সরঞ্জামগুলিকে ঘনিষ্ঠভাবে পর্যালোচনা করার পরে এটি বেশ কিছুক্ষণ হয়ে গেছে। আমরা ইসি 2 তে চলমান অন্য প্রকল্পের জন্য কোডডেপ্লয় ব্যবহার করছি, তবে আমি এটি কখনও সার্ভারলেস প্রকল্প স্থাপনার জন্য ব্যবহার করি না। আমরা আমাদের সাথে সরঞ্জামগুলির সাথে পরিচিত হওয়ার পরে, ক্লাউডফর্মেশন এবং ল্যাম্বডোর বিধানের জন্য এখন একটি দেশীয় সংহত ছিল - সম্ভবত এডাব্লুএস থেকে এসএএম-এর সাথে। আমরা সার্ভারলেস কাঠামোটি ব্যবহার করছি এবং এটি ক্লাউডফর্মেশন টেম্পলেটগুলি উত্পন্ন করার পরেও এটি এডাব্লুএস-এর সরঞ্জামগুলির সাথে সরাসরি কাজ করে না।

প্রস্তুত হতে

আমি যে অ্যাডাব্লুএস পরিষেবাগুলি ব্যবহার করি তা হ'ল ইসি 2, ডকার, ইসিআর, এস 3, আইএএম, কোড বিল্ড, কোড পাইপলাইন, ক্লাউডওয়াচ এবং ক্লাউডট্রাইল। প্রতিটি পরিষেবা কীভাবে কাজ করে তা সম্পর্কে আপনার কমপক্ষে একটি প্রাথমিক জ্ঞান থাকা দরকার।

আমি মূলত .NET এ ব্যাকএন্ড কোড লিখি যার ভিত্তিতে এই টিউটোরিয়াল ভিত্তিক। প্রাক-বিল্ট কোডবিল্ড চিত্রগুলির মধ্যে কোনওটিই। নেট এবং নোডজেএস রানটাইম উভয়ই রাখে না (সার্ভারলেস কাঠামোর জন্য নোডজেএস প্রয়োজনীয়)। নোডজেএস-এ আপনার ল্যাম্বদা ফাংশনগুলি লিখিতভাবে স্থাপনের পাইপলাইন স্থাপন করা অনেক সহজ করে তোলে কারণ আপনি কেবলমাত্র আপনার ডকার ইমেজে রানটাইম ইনস্টল করেছেন (আপনি এই টিউটোরিয়ালটির অনেকাংশ এড়িয়ে যেতে সক্ষম হতে পারেন)। আমার আরও উল্লেখ করা উচিত যে এটি আমার প্রথম পাত্রে পরিচিত ছিল, তাই আমি নতুন কিছু শিখতে আগ্রহী হয়েছিলাম।

আমিও ধরে নিচ্ছি যে আপনার কোডটি গিটের মতো একটি সংগ্রহস্থলে রয়েছে। এই টিউটোরিয়ালটি কেবল এস 3 এ একটি ফাইল আপলোড করে যা মোতায়েনের জন্য কোড সহ একটি প্যাকেজ ধারণ করে। কীভাবে আপনি এটিতে অ্যাক্সেস করেন তা সম্পূর্ণ আপনার উপর নির্ভর করে। আপনি সবসময় আপনার পাইপলাইন গিথুব বা কোডকমের মতো সংগ্রহস্থলের সাথে সংযুক্ত করে আরও এগিয়ে যেতে পারেন।

1. একটি ইসি 2 উদাহরণ তৈরি করুন এবং ডকার ইনস্টল করুন

স্ট্যান্ডার্ড এডাব্লুএস লিনাক্স 2 ইসি 2 উদাহরণ বুট করে শুরু করুন - এটি স্ব-ব্যাখ্যামূলক হওয়া উচিত। সাইন ইন করুন এবং নিম্নলিখিত কমান্ডগুলি ব্যবহার করে ডকার ইনস্টল করুন:

sudo yum আপডেট -y sudo amazon-linux-extras ডকার সুডো সার্ভিস স্টার্ট ডকার ইনস্টল করুন

আমাদের ইকি 2 ব্যবহারকারীকে ডকার গ্রুপেও যুক্ত করতে হবে যাতে আপনি sudo ব্যবহার না করে ডকার কমান্ডগুলি চালাতে পারেন:

sudo usermod -a -G ডকার ইক 2-ব্যবহারকারী

কমান্ডটি কার্যকর করার পরে, লগ আউট করে আপনার ইসি 2 ইভেন্টে আবার লগ ইন করুন যাতে ইস 2 ব্যবহারকারীরা নতুন অনুমতি নিতে পারে। তারপরে নিশ্চিত হয়ে নিন যে ইক্য 2-ব্যবহারকারী সুডো ছাড়াই ডকার কমান্ডগুলি চালাতে পারে:

ডকার তথ্য
ডকার তথ্য কমান্ডের আউটপুট

২. ডকার চিত্রটি তৈরি করুন এবং ইসিআর ক্লিক করুন

উপরের পদক্ষেপটি সফল হয়েছে বলে ধরে নেওয়া, পরবর্তী পদক্ষেপটি ডকার চিত্রটি তৈরি করা এবং এটি ইসিআর-তে চাপানো। এডাব্লুএস গিথুব-এ কোড বিল্ডের জন্য বেস চিত্র সরবরাহ করে, যা আমাদের নিজস্ব চিত্র তৈরি করা সহজ করে তোলে।

আপনি নিজের ছবি তৈরি করতে নিম্নলিখিতটি না করতে চাইলে আমি গিথুবে আমার চিত্রও প্রকাশ করেছি: https://github.com/effectivedigital/serverless-depدام-image

চিত্রগুলি ক্লোন করে এবং .NET কোর 2.1 ডিরেক্টরিতে নেভিগেট করে শুরু করুন:

গিট ক্লোন https://github.com/aws/aws-codebuild-docker-images.git সিডি অ্যাউস-কোড বিল্ড-ডকার-চিত্র সিডি উবুন্টু / ডট-নেট / কোর-2.1 /

আপনার প্রিয় পাঠ্য সম্পাদকটিতে ডকফায়াইল খুলুন:

ন্যানো ডকফেরফাইল

নোকজেজেএস ইনস্টল করতে কমান্ডগুলি এবং ইতিমধ্যে ডকফাইফিলের মধ্যে থাকা অন্যান্য কমান্ডগুলির শেষে সার্ভারলেস কাঠামো যুক্ত করুন। আমি নোডজেএস ডকার ইমেজ থেকে এডাব্লুএস-তে একই সংগ্রহস্থল থেকে বেশিরভাগ কমান্ড পেতে সক্ষম হয়েছি:

# নোড নির্ভরতা ENV NODE_VERSION = "10.14.1" ইনস্টল করুন
# GPG- কি https://github.com/nodejs/node#release-team চালান সেট তালিকাভুক্ত করা হয় -ex \ && ইনপুট \ 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ B9AE9905FFD7803F25714661B63B535A4C206CA9 \ 77984A986EBC2AA786BC0F66B01FBB92821C587A \ 56730D5401028683275BD23C23EFEFE93C4CFFFE \ 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ FD3A5288F042B6850C66B31F09FE44734EB7990E \ 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ 4ED778F539E3634C779C87C6D7062848A1AB005C \ A48C2BEE680E841632CD4E44F07496B3EB3C1762 \; Make \ gpg - keyserver hkp: //p80.pool.sks-keyservers.net: 80 - recv-key "$ কী" || \ gpg - keyserver hkp: //ipv4.pool.sks-keyservers.net - recv-key "$ কী" || \ জিপিজি - কীসার্ভার hkp: //pgp.mit.edu: 80 - recv-key "$ কী"; R আরএন সেট -েক্সেক্স \ &&get "https://nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" -O নোড-ভি $ NODE_VER $ &&get "https://nodejs.org/download/release/v$NODE_VERSION/SHASUMS256.txt.asc" -O SHASUMS256.txt.asc \ && gpg - ব্যাচ - ডিক্রিপ্ট - আউটপুট SHASUMS256.txt SHASUMS256.txt.asc & &&p "নোড-ভি $ NODE_VERSION-linux-x64.tar.gz \ $" SHASUMS256.txt | sha256sum -c - \ && tar -xzf "নোড-ভি $ NODE_VERSION-linux-x64.tar.gz" -সি / usr / স্থানীয় - স্ট্রিপ-উপাদান = 1 \ &&m "নোড-ভি $ NODE_VERSION- লিনাক্স-এক্স 64। tar.gz "SHASUMS256.txt.asc SHASUMS256.txt \ &&LN -s / usr / স্থানীয় / বিন / নটেন / usr / স্থানীয় / বিন / নটেনজস \ &&mmff / var / lib / এপিটি / তালিকা / * / টিএমপি / * / ভেরি / টিএমপি / *
RUN এনপিএম সত্য হিসাবে অনিরাপদ-অনুমতি নির্ধারণ করে
সিএমডি ["নোড"]
# সার্ভারলেস ফ্রেমওয়ার্ক আরএন-র ইনস্টল করুন -রূপ সেট করুন - & npm ইনস্টল করুন -জি সার্ভারলেস

এখন চিত্রটি তৈরি এবং চিহ্নিত করা যেতে পারে:

ডকার বিল্ড -t আওস / কোড বিল্ড / ডট-নেট

বিল্ডটি সম্পূর্ণ হয়ে গেলে, সমস্ত ফাংশন কাজ করছে এবং সার্ভারলেস সঠিকভাবে ইনস্টল হয়েছে তা নিশ্চিত করতে চিত্রটি চালানো যেতে পারে:

ডকার রান -আইট্রি পয়েন্ট / অ্যাডস / কোড বিল্ড / ডট-নেট-সি ব্যাশ
sls -v
সদ্য নির্মিত পাত্রে sls -v চালান

এরপরে, আমরা এডাব্লুএস সিএলআই ব্যবহার করে ইসিআর তে একটি সংগ্রহশালা তৈরি করব। কমান্ডটি চালুর পরে, নতুন সংগ্রহস্থলটি এডাব্লুএস কনসোলে উপস্থিত হবে:

এউএসসিআর তৈরি করুন-সংগ্রহস্থল --repositoryname কোড বিল্ড-ডটনেট-নোড
ইসিআর-তে রিপোজিটরি তৈরির পরে এডাব্লুএস সিএলআইয়ের প্রতিক্রিয়াইসিআর তে সদ্য নির্মিত ভান্ডার

এখন আমরা পূর্ববর্তী পদক্ষেপ থেকে সংগ্রহস্থল Uri মান সহ পূর্ববর্তী নির্মিত আউস / কোড বিল্ড / ডট-নেট চিত্র চিহ্নিত করি:

ডকার ট্যাগ আউস / কোড বিল্ড / ডট-নেট .dkr.ecr.ap- দক্ষিণী-2.amazonaws.com / কোড বিল্ড-ডটনেট-নোড

আপনার ধারক রেজিস্ট্রেশনের জন্য ডকার লগইন প্রমাণীকরণ কমান্ড স্ট্রিং পেতে গেট-লগইন কমান্ডটি চালান:

aws এসিআর গেট-লগইন - কোনও ইমেল অন্তর্ভুক্ত নয়
ECR এর সাথে প্রমাণীকরণের জন্য লগইন কমান্ড

শেষ পদক্ষেপে get-login কমান্ড চালিয়ে ফিরে আসা ডকার লগইন কমান্ডটি চালান।

ডকার লগিন .dkr.ecr.ap- দক্ষিণী -২.মামাজোনাজোন

যদি লগইন সফল হয়, আমরা এখন আমাদের ডকার চিত্রটি ইসিআর-এ তৈরি ভান্ডারে স্থানান্তর করতে পারি। সমাপ্ত চিত্রের আকারের উপর নির্ভর করে এটি কয়েক মিনিট সময় নিতে পারে:

ডকার ধাক্কা .dkr.ecr.ap- দক্ষিন-2.amazonaws.com / কোড বিল্ড-ডটনেট-নোড
ইসি 2 তে ডকার আমাদের চিত্র তৈরি করেইসিআরে ডকার চিত্র image

ছবিটি তৈরি হয়ে গেলে, সবাই ইসিআর এর মাধ্যমে চিত্রটি অ্যাক্সেস করতে পারে। অনুমোদনের একটি উত্পাদন পরিবেশে লক করা উচিত। তবে এই উদাহরণটি এটিকে খোলার অনুমতি দেয়। এডাব্লুএস কনসোলে, অনুমতি ট্যাবে নেভিগেট করুন, নীতি সম্পাদনা করুন JSON নির্বাচন করুন এবং এই নীতিটি আটকে দিন:

Version "সংস্করণ": "২০০৮-১০-১" "," বিবৃতি ": [Sid" সিড ":" সক্ষমআকাউন্টঅ্যাক্সেস "," প্রভাব ":" অনুমতি দিন "," প্রধান শিক্ষক ":" * "," অ্যাকশন ": [" ইসিআর " : ব্যাচচেকলায়ারঅ্যাভিলিটি "," এসিআর: ব্যাচগেটআইমেজ "," ইসিআর: বর্ণনা আইটেমস "," এসিআর: বর্ণনা রাইপোসিটরিজ "," এসিআর: গেটঅর্ডাইজেশনটোকেন "," ইসিআর: গেটডাউনলোডউরলফোর্ডলাইয়ার "," ইসিআর: গেটরোপোসিটরি পলিসি] "

৩. আপনার পাইপলাইন তৈরি করুন

সময় এসেছে পাইপলাইন তৈরির। এটি প্রয়োগ করা সহজ এবং পুনরাবৃত্তিযোগ্য করার জন্য আমি সার্ভারলেস কাঠামোটি ব্যবহার করে পাইপলাইন তৈরি করেছি। আপনি একই জিনিসটি ক্লাউডফর্মেশনে তৈরি করে এটি সম্পাদন করতে পারেন।

আমি আমার সার্ভারলেস.আইএমএল ফাইল থেকে পুরো উত্সটি অন্তর্ভুক্ত করতে যাচ্ছি না, আপনি এটির পরিবর্তে গিথুব থেকে এটি ক্লোন করতে পারেন: https://github.com/effectivedigital/serverless-depدام-pipline

এটি ঠিক কী করবে তা বুঝতে সার্ভারলেস টেমপ্লেটটি একবার দেখুন, তবে সংক্ষেপে এটি সেট আপ করবে:

  • 3x এস 3 বালতি
  • 1x বালতি নীতি
  • 3x আইএএম ভূমিকা
  • 1x কোড বিল্ড প্রকল্প
  • 1x কোড পাইপলাইন পাইপলাইন
  • 1x ক্লাউডওয়াচ ইভেন্ট
  • 1x ক্লাউডট্রেল ট্রেইল

ক্লোনিংয়ের পরে, ECR এ আপনার চিত্রটিতে ডকারআইমেজআরন আপডেট করুন। আপনি যদি ডিপোমেন্ট.জিপ ব্যতীত অন্য কোনও ফাইলের নাম সহ ডিপ্লোয়মেন্ট প্যাকেজ তৈরি করে থাকেন তবে ডিপোমেন্টফাইলেনাম আপডেট করুন:

ডকার ইমেজআরন: .dkr.ecr.ap-দক্ষিন-2.amazonaws.com / কোড বিল্ড-ডটনেট-নোড: সর্বশেষ ডিপোমেন্টমেন্ট ফাইলনাম: ডিপোমেন্ট.জিপ

পাইপলাইন এখন ব্যবহারের জন্য প্রস্তুত। সার্ভারলেস মোতায়েন কমান্ড চালান এবং আপনার জন্য সবকিছু সেট আপ হওয়ার জন্য অপেক্ষা করুন:

sls স্থাপনা -v
আমাদের ক্লাউডফর্মেশন স্ট্যাক, সার্ভারলেস ফ্রেমওয়ার্ক দ্বারা নির্মিতকোডপাইলাইন পাইপলাইন সার্ভারলেস ফ্রেমওয়ার্ক দ্বারা তৈরিকোড বিল্ড প্রকল্পটি সার্ভারলেস কাঠামোর দ্বারা তৈরি

৪. আপনার আবেদনে buildSpec.yml যুক্ত করুন

যখন এস 3-তে কোডপাইলাইন ডিপ্লোয়মেন্ট ফাইলে একটি পরিবর্তন সনাক্ত করে, এটি কোডবিল্ডকে অ্যাপ্লিকেশনটি চালানো এবং নির্মাণ এবং মোতায়েনের নির্দেশ দেয়। তবে আপনার অ্যাপ্লিকেশনটি তৈরি এবং স্থাপন করতে কমান্ডগুলি চালানো দরকার তা কোডবিল্ডকেও জানতে হবে। বিল্ডস্পেক.আইএমএল-এ নির্দেশাবলী রয়েছে যা কোডবিল্ড অনুসরণ করে।

আমি একটি খুব সহজ হ্যালো ওয়ার্ল্ড অ্যাপ্লিকেশন তৈরি করেছি যাতে নিম্নলিখিত নমুনা buildSpec.yml ফাইল অন্তর্ভুক্ত রয়েছে: https://github.com/effectivedigital/serverless-depدام-app

বিকল্পভাবে, আপনি আপনার বিদ্যমান অ্যাপ্লিকেশনগুলিতে একটি বিল্ডস্পেক.আইএমএল ফাইল তৈরি করতে এবং নিম্নলিখিত নির্দেশাবলীর সাহায্যে এটি তৈরি করতে পারেন:

সংস্করণ: 0.2
পর্যায়ক্রমে: প্রাক-বিল্ড: কমান্ডগুলি: - chmod a + x * বিল্ড: কমান্ড: -। / বিল্ড। পোস্ট পোস্টটি: আদেশগুলি: - এসএলএস স্থাপন -v -s $ স্টেজ

5. আপনার পাইপলাইন পরীক্ষা করুন

আপনার পাইপলাইনটি প্রথমবারের জন্য চালানোর জন্য এখন সবকিছু ঠিক আছে। ডিপ্লোয়মেন্ট.জিপ নামে একটি প্যাকেজ তৈরি করুন যা আপনার সার্ভারলেস অ্যাপ্লিকেশন এবং বিল্ডস্পেক.আইএমএল ফাইলের সমস্ত ফাইল ধারণ করবে।

কয়েক মুহুর্তের পরে ক্লাউডট্রেইলে পুটবজেক্ট ইভেন্টটি লগ করা উচিত এবং ক্লাউডওয়াচ ইভেন্টের নিয়মটি ট্রিগার করা উচিত যা কোডপাইপলাইনটি চালানোর জন্য ট্রিগার করে।

ডিপ্লয়মেন্ট.জিপ এস 3 এ আপলোড করা হয়েছেকোড পাইপলাইন শুরু হয়েছে এবং বিল্ডটি চলছে

আমরা যদি এডাব্লুএস কোড বিল্ড পদক্ষেপের বিশদটিতে ক্লিক করি, আমরা বিল্ড এবং স্থাপনার অগ্রগতি দেখতে পাব:

কোড বিল্ড ডকার চিত্র থেকে আউটপুট পায় যা বিল্ড এবং স্থাপনা করছেআমাদের লক্ষ্য সফল হয়েছিল!

আমাদের পাইপলাইন দ্বারা সরবরাহ করা নতুন অ্যাপ্লিকেশনটি ক্লাউডফর্মেশনেও দৃশ্যমান:

আমরা আমাদের সাধারণ অ্যাপ্লিকেশনটিতে তৈরি হওয়া এন্ডিয়া পয়েন্টটি পরীক্ষা করতে পারি (ইউআরএল কোডবিল্ড আউটপুটে বা এপিআই গেটওয়েতে রয়েছে) এবং দেখুন যে আমাদের অ্যাপটি সফলভাবে কাজ করে:

আমাদের এপিআই কল করতে পোস্টম্যান ব্যবহার করা

সারসংক্ষেপ

কোডপাইলাইন আপনাকে একটি স্কেলযোগ্য, নমনীয় এবং সাশ্রয়ী মূল্যের সিআই / সিডি পাইপলাইন তৈরি করতে এবং traditionalতিহ্যবাহী সার্ভার-নির্মিত পাইপলাইনগুলির সাথে সম্পর্কিত কিছু সমস্যা সমাধানের অনুমতি দেয়।

আমি আরও এক ধাপ এগিয়ে যেতে এবং স্থাপনাটি শেষ হওয়ার পরে মিশ্রণে ইউনিট পরীক্ষা যুক্ত করতে পছন্দ করব, যদিও এটি তার নিজস্ব একটি নিবন্ধের ওয়ারেন্ট দেয় - ভবিষ্যতে প্রত্যাশার জন্য কিছু!

আমাদের সম্প্রদায়ে স্ল্যাকে যোগ দিন এবং আমাদের সাপ্তাহিক ভৌতবিদ্যাগুলি পড়ুন ⬇

যদি এই পোস্টটি সহায়ক ছিল, দয়া করে লেখকটির জন্য আপনার সমর্থনটি দেখানোর জন্য কয়েকবার ক্লিচ বোতামটি ক্লিক করুন! ⬇