গিটল্যাব সিআই 2026-এ উপলব্ধ সবচেয়ে শক্তিশালী, সম্পূর্ণ-সংহত CI/CD সিস্টেমগুলির মধ্যে একটি — কোনও বাহ্যিক পরিষেবার প্রয়োজন নেই, পাইপলাইনগুলি এককভাবে সংজ্ঞায়িত করা হয়েছে.gitlab-ci.yml ফাইল এই নির্দেশিকা পরীক্ষা থেকে উত্পাদন স্থাপনা পর্যন্ত একটি সম্পূর্ণ পাইপলাইন তৈরি করে।
📋 Table of Contents
কিভাবে গিটল্যাব সিআই কাজ করে
গিটল্যাব সিআই.gitlab-ci.ymlএ সংজ্ঞায়িত পাইপলাইন চালায় আপনার রেপো রুটে। প্রতিটি পাইপলাইন আছেপর্যায় (পরীক্ষা, নির্মাণ, স্থাপন) যা ক্রমানুসারে চলে। একটি পর্যায়ের মধ্যে,চাকরি সমান্তরালভাবে চালান। চাকরীগুলিদৌড়বিদ (GitLab-হোস্টেড বা স্ব-হোস্টেড)।
বেসিক পাইপলাইন স্ট্রাকচার
# .gitlab-ci.yml
stages:
- test
- build
- deploy
variables:
NODE_VERSION: "20"
# Test stage
test:
stage: test
image: node:20-alpine
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- node_modules/
script:
- npm ci
- npm run lint
- npm run test:coverage
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
ডকার দিয়ে স্টেজ তৈরি করুন
build:
stage: build
image: docker:24
services:
- docker:24-dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
script:
- docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
- docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
- docker push "$CI_REGISTRY_IMAGE:latest"
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
পরিবেশের সাথে মঞ্চ স্থাপন করুন
deploy_production:
stage: deploy
image: alpine:latest
before_script:
- apk add --no-cache openssh-client
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | ssh-add -
script:
- ssh -o StrictHostKeyChecking=no $DEPLOY_USER@$PROD_HOST
"cd /app && docker compose pull && docker compose up -d"
environment:
name: production
url: https://example.com
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
when: manual # require manual approval for production
দ্রুত পাইপলাইনের জন্য ক্যাশিং
cache:
key:
files:
- package-lock.json # cache invalidates when lockfile changes
paths:
- node_modules/
- .npm/
# Python: paths: [.cache/pip, venv/]
# Go: paths: [.go/pkg/mod/]
# Rust: paths: [target/, .cargo/]
সমান্তরাল ম্যাট্রিক্স বিল্ডস
test:
stage: test
parallel:
matrix:
- NODE_VERSION: ["18", "20", "22"]
image: node:$NODE_VERSION-alpine
script:
- npm ci
- npm test
# Runs 3 parallel jobs testing against Node 18, 20, 22
গোপনীয়তা এবং ভেরিয়েবল পরিচালনা
হার্ডকোড গোপন কখনও. তাদের সংরক্ষণ করুনসেটিংস, তারপর CI/CD, তারপর ভেরিয়েবল:
- সংবেদনশীল মানগুলিকেহিসেবে চিহ্নিত করুন৷ মুখোশ (লগের মধ্যে লুকানো)
- স্থাপনার গোপনীয়তাগুলিকেহিসাবে চিহ্নিত করুন৷ সুরক্ষিত (শুধুমাত্র সুরক্ষিত শাখায় উপলব্ধ)
- ব্যবহার করুনপরিবেশের সুযোগ বিভিন্ন স্টেজিং বনাম উৎপাদন মূল্যের জন্য
পাইপলাইন অপ্টিমাইজেশান টিপস
- ব্যবহার করুন
needs:পর্যায়ক্রমের বাইরে কাজ চালানোর জন্য যখন নির্ভরতা অনুমতি দেয় - ব্যবহার করুন
rules:পরিবর্তেonly/except(আধুনিক, আরো নমনীয়) - ব্যবহার করুন
interruptible: trueতাই নতুন ধাক্কা পুরানো পাইপলাইন বাতিল করে - আক্রমনাত্মকভাবে ক্যাশে — নির্ভরতা ইনস্টল প্রায়ই সবচেয়ে ধীর পদক্ষেপ
- ছোট বেস ইমেজ ব্যবহার করুন (আলপাইন ভেরিয়েন্ট) দ্রুত কাজ শুরু করার জন্য
প্রায়শই জিজ্ঞাসিত প্রশ্ন
প্রশ্ন: গিটল্যাব সিআই বনাম গিটহাব অ্যাকশন?
উত্তর: গিটল্যাব সিআই সম্পূর্ণরূপে গিটল্যাবের সাথে একত্রিত (রেজিস্ট্রি, পরিবেশ, নিরাপত্তা স্ক্যানিং বিল্ট ইন)। গিটহাব অ্যাকশনের একটি বৃহত্তর মার্কেটপ্লেস প্রি-বিল্ট অ্যাকশন রয়েছে। উভয়ই চমৎকার; আপনার কোড কোথায় থাকে তার উপর ভিত্তি করে চয়ন করুন।
প্রশ্নঃ আমার কি স্ব-হোস্টেড রানার দরকার?
উত্তর: গিটল্যাব-হোস্টেড রানাররা বেশিরভাগ প্রকল্পের জন্য কাজ করে। স্ব-হোস্টেড রানাররা ভারী কাজের চাপ, নির্দিষ্ট হার্ডওয়্যার বা ব্যক্তিগত নেটওয়ার্ক অ্যাক্সেসের জন্য এটি মূল্যবান।
প্রশ্নঃ আমি কিভাবে ধীরগতির পাইপলাইনের গতি বাড়াতে পারি?
A: ক্যাশে নির্ভরতা, ব্যবহারneeds: সমান্তরাল সম্পাদনের জন্য, ছোট ডকার ইমেজ ব্যবহার করুন, টেস্ট স্যুটগুলিকেparallel:দিয়ে বিভক্ত করুন৷ . প্রথমে সবচেয়ে ধীরগতির কাজ প্রোফাইল করুন।
প্রশ্ন: আমি কিভাবে পাইপলাইনে ডাটাবেস মাইগ্রেশন পরিচালনা করব?
উত্তর: অ্যাপটি পুনরায় চালু করার আগে একটি স্থাপনা-পর্যায়ের কাজ হিসাবে মাইগ্রেশন চালান। সর্বদা একটি প্রোডাকশন-মত ডাটাবেস দিয়ে প্রথমে স্টেজিংয়ে মাইগ্রেশন পরীক্ষা করুন।
প্রশ্ন: ক্যাশে বনাম আর্টিফ্যাক্ট – পার্থক্য কি?
A: cache রান জুড়ে ফাইল পুনরায় ব্যবহার করে কাজের গতি বাড়ায় (নিশ্চিত নয়)। artifacts একটি পাইপলাইনের মধ্যে পর্যায়গুলির মধ্যে ফাইলগুলি পাস করুন (গ্যারান্টিযুক্ত)।
উপসংহার
GitLab CI একটি একক YAML ফাইলে একটি সম্পূর্ণ, সমন্বিত CI/CD সিস্টেম সরবরাহ করে। এখানে পাইপলাইন — কভারেজ সহ পরীক্ষা করুন, ডকার ইমেজ তৈরি করুন এবং পুশ করুন, ম্যানুয়াল অনুমোদনের সাথে উৎপাদনে স্থাপন করুন — বেশিরভাগ অ্যাপ্লিকেশনের জন্য সম্পূর্ণ ওয়ার্কফ্লো কভার করে। একটি পরীক্ষার পর্যায় দিয়ে শুরু করুন, ক্রমবর্ধমানভাবে বিল্ড এবং স্থাপন যোগ করুন এবং আপনার পাইপলাইন বাড়ার সাথে সাথে ক্যাশিং এবং সমান্তরাল কাজগুলির সাথে অপ্টিমাইজ করুন।
🔗 Share this article
✍️ Leave a Comment