CI/CD-ի աշխատանքը
CI/CD-ի կարևորությունը և գաղտնիքները
CI/CD-ի կարևորությունը և գաղտնիքները
Նախաբան
Ժամանակի և տեղեկության արագ զարգացմանը զուգընթաց առաջ են գալիս բազում նոր տեխնոլոգիաներ որոնք ավտոմացնում են մարդկային գործոն։ Շատ ծրագրավորողներ մտածում են CI/CD-ին DevOps ինժիներների գործիքակազմ է, բայց զարգացման տեմպերը ստիպում են ծրագրավորողներին սովորել ու կիրառել նոր տեխնոլոգիաներ։ Որպեսզի ավելացնեք ձեր ունեցած մասնագիտական մակարդակը խորհուրդ եմ տալիս իմանալ նաև այս տեխնոլոգիան։ Այն կոգնի որպեսզի դուք լինեք ավեի մրցակցային շուկայում։
CI/CD-ի մասին
Ժամանակակից ծրագրային ապահովման մշակումն արագ զարգացման և բարձր որակի ապահովման պահանջներ ունի։ Այս նպատակին հասնելու համար օգտագործվում է Շարունակական ինտեգրում և շարունակական տեղակայում (Continuous Integration / Continuous Deployment - CI/CD) մեթոդաբանությունը։
CI/CD-ն ավտոմատացնում է կոդի ինտեգրման, թեստավորման և տեղակայման գործընթացները, ինչը նվազեցնում է ձեռնարկվող գործողությունների քանակը, արագացնում է նոր ֆունկցիաների թողարկումը և բարելավում է ծրագրային ապահովման հուսալիությունը։
- Շարունակական ինտեգրում (CI) – ապահովում է, որ ծրագրային կոդի յուրաքանչյուր փոփոխություն ստուգվում և համակցվում է հիմնական կոդի բազայի հետ, ինչը նվազեցնում է ինտեգրացիոն խնդիրների առաջացման հավանականությունը。
- Շարունակական տեղակայում (CD) – ավտոմատացնում է կոդի ստուգումն ու տեղակայումը արտադրական միջավայրում, ապահովելով նոր փոփոխությունների արագ և անվտանգ թողարկումը։
CI/CD-ի կիրառումը կարևոր է ինչպես փոքր, այնպես էլ խոշոր ծրագրային նախագծերի համար, քանի որ այն բարձրացնում է զարգացման գործընթացի արդյունավետությունը և նվազեցնում սխալների հավանականությունը արտադրական միջավայրում։
🚀 Ինչպես Սկսել և Կիրառել CI/CD
CI/CD-ի ներդրումը պահանջում է փուլային մոտեցում, որը ներառում է գործիքների ընտրություն, միջավայրի կարգավորում, պլանավորում և ավտոմատացում։
1. Ընտրել CI/CD Գործիքներ
Կախված տեխնոլոգիական ստեկից, կարելի է ընտրել տարբեր CI/CD գործիքներ, օրինակ՝
- GitHub Actions – հարմար է GitHub-ի հետ ինտեգրվելու համար։
- GitLab CI/CD – ներգրկված է GitLab հարթակում և թույլ է տալիս ավտոմատացնել զարգացման բոլոր փուլերը։
- Jenkins – հզոր և ճկուն գործիք, որը կարող է աշխատել ցանկացած միջավայրում։
- CircleCI, Travis CI, Bitbucket Pipelines – այլ հայտնի լուծումներ, որոնք առաջարկում են ամպային CI/CD։
2. Կարգավորել Շարունակական Ինտեգրում (CI)
CI-ի հիմնական նպատակը կոդի յուրաքանչյուր փոփոխության դեպքում այն ավտոմատ կերպով ստուգելն ու թեստավորելն է։
✅ Քայլեր
- Ստեղծել Git պահոց, օրինակ՝ GitHub-ում կամ GitLab-ում։
- Կազմել CI պլան՝ ներառելով հետևյալ քայլերը՝
- Կախվածությունների տեղադրում
- Կոդի լինթինգ և ստատիկ անալիզ
- Թեստերի ավտոմատ գործարկում
- Ստեղծել CI կոնֆիգուրացիոն ֆայլ (օր.՝
.github/workflows/ci.yml,.gitlab-ci.ymlկամJenkinsfile)։ - CircleCI, Travis CI, Bitbucket Pipelines – այլ հայտնի լուծումներ, որոնք առաջարկում են ամպային CI/CD։
- Փորձարկել և շտկել հնարավոր սխալները։
3. Կարգավորել Շարունակական Տեղակայում (CD)
CD-ն ապահովում է, որ թեստերն անցած կոդը ավտոմատ կերպով տեղակայվի սերվերային կամ ամպային միջավայրում։
✅ Քայլեր
- Ընտրել տեղակայման միջավայր՝
- VPS (օր. DigitalOcean, AWS EC2, Linode)
- Կոնտեյներներ (Docker, Kubernetes)
- Ամպային լուծումներ (Vercel, Netlify, Firebase Hosting, AWS, Azure, GCP)
- Կազմել տեղակայման գործընթացը՝
- Build-ի ստեղծում
- Փաթեթավորում կամ կոնտեյներացում
- Տեղակայում production կամ staging միջավայրում
- Թեստավորել տեղակայված հավելվածը։
Համախբելով ինֆորմացիան հոդվածի վերջում կտեղադրեմ իմ git repository-ն, որտեղ կլինի մի քանի օրինակ։
Բացի այդ այժմ ներկայացնեմ .yml ֆորմատի մասին և օգտվելու կանոնները։
Ինչ է YAML-ը?
YAML (Yet Another Markup Language կամ YAML Ain't Markup Language) ֆորմատն ընթեռնելի և թեթև տվյալների սերիալիզացիայի լեզու է, որը լայնորեն օգտագործվում է կոնֆիգուրացիոն ֆայլերի համար։ YAML-ը հարմար է հատկապես CI/CD պլանավորման (GitHub Actions, GitLab CI/CD, Jenkins), Docker Compose, Kubernetes, Ansible և այլ DevOps գործիքների համար։
YAML-ի Հիմնական Կանոնները
✅ Պարզ ու հիերարխիկ կառուցվածք
YAML-ն օգտագործում է եզակի տարածություն (indentation) հիերարխիան սահմանելու համար (ոչ թե փակագծեր կամ մակնշման տեգեր, ինչպես JSON-ում կամ XML-ում)։
app:
name: "My Application"
version: 1.0
environment: "production"
🔹 Տարածությունները պարտադիր են, անհրաժեշտ է օգտագործել 2 կամ 4 բացատ (ոչ թե tab)։
✅ Key-Value (Բանալի-Արժեք) Զույգեր
server: "localhost"
port: 8080
debug: true
🔹 Տեքստային արժեքները կարող են լինել չակերտներով "string" կամ առանց դրանց։
✅ Ցանկեր (Lists, Arrays)
YAML-ում ցանկերը (arrays) ներկայացվում են "-" նշանով։
freamworks:
- React
- Vue
- Angular
🔹 Կարող են լինել նաև բանալի-արժեք ձևաչափով.
database:
mysql:
version: "8.0"
port: 3306
psotgresql:
version: "15"
port: 5432
✅ Բազմատողային Տեքստեր (Multiline Strings)
Եթե անհրաժեշտ է գրել բազմատողային արժեք, օգտագործվում է | (literal block) կամ > (folded block) նշանը։
message: |
Սա բազմատողային
տեքստ է, որը
պահպանվում է նույն ձև։
message: >
Սա բազմատողային
տեքստ է, բայց ամեն
նոր տող վերածվում է space-ի։
✅ Թվեր և Բուլյան Արժեքներ
Եթե անհրաժեշտ է գրել բազմատողային արժեք, օգտագործվում է | (literal block) կամ > (folded block) նշանը։
max_retries: 5
timeout: 30.5
is_enabled: true
is_desabled: false
🔹 Բուլյան արժեքները կարող են լինել true/false, on/off, yes/no։
🔹 Թվերը կարող են լինել ամբողջ (integer) կամ տասնորդական (float)։
YAML-ում Տվյալների Կրկնակի Օգտագործում (Anchors & Aliases)
YAML-ը թույլ է տալիս տվյալների կրկնակի օգտագործում &anchor և *alias նշաններով։
default_config: &config
retries: 3
timeout: 10
log_level: "debug"
service_1:
<<: &config
name: "API Service"
service_1:
<<: &config
name: "Worker Service"
🔹 ❬❬ *config նշանակում է, որ service_1 և service_2-ը ժառանգում են default_config արժեքները։
YAML-ում Տվյալների Կրկնակի Օգտագործում (Anchors & Aliases)
YAML-ի Սխալներից Խուսափելու Խորհուրդներ
⚠Տիպիկ սխալներ՝
❌ Tabs-ի օգտագործումը
✅ Օգտագործեք 2 կամ 4 բացատ
Մանրամասն ինֆորմացա կարող ես տեսնել իմ git repository-ում
- 0
- 16