CI/CD-ի աշխատանքը
CI/CD-ի կարևորությունը և գաղտնիքները
Ժամանակի և տեղեկության արագ զարգացմանը զուգընթաց առաջ են գալիս բազում նոր տեխնոլոգիաներ որոնք ավտոմացնում են մարդկային գործոն։ Շատ ծրագրավորողներ մտածում են CI/CD-ին DevOps ինժիներների գործիքակազմ է, բայց զարգացման տեմպերը ստիպում են ծրագրավորողներին սովորել ու կիրառել նոր տեխնոլոգիաներ։ Որպեսզի ավելացնեք ձեր ունեցած մասնագիտական մակարդակը խորհուրդ եմ տալիս իմանալ նաև այս տեխնոլոգիան։ Այն կոգնի որպեսզի դուք լինեք ավեի մրցակցային շուկայում։
Ժամանակակից ծրագրային ապահովման մշակումն արագ զարգացման և բարձր որակի ապահովման պահանջներ ունի։ Այս նպատակին հասնելու համար օգտագործվում է Շարունակական ինտեգրում և շարունակական տեղակայում (Continuous Integration / Continuous Deployment - CI/CD) մեթոդաբանությունը։
CI/CD-ն ավտոմատացնում է կոդի ինտեգրման, թեստավորման և տեղակայման գործընթացները, ինչը նվազեցնում է ձեռնարկվող գործողությունների քանակը, արագացնում է նոր ֆունկցիաների թողարկումը և բարելավում է ծրագրային ապահովման հուսալիությունը։
CI/CD-ի կիրառումը կարևոր է ինչպես փոքր, այնպես էլ խոշոր ծրագրային նախագծերի համար, քանի որ այն բարձրացնում է զարգացման գործընթացի արդյունավետությունը և նվազեցնում սխալների հավանականությունը արտադրական միջավայրում։
CI/CD-ի ներդրումը պահանջում է փուլային մոտեցում, որը ներառում է գործիքների ընտրություն, միջավայրի կարգավորում, պլանավորում և ավտոմատացում։
Կախված տեխնոլոգիական ստեկից, կարելի է ընտրել տարբեր CI/CD գործիքներ, օրինակ՝
CI-ի հիմնական նպատակը կոդի յուրաքանչյուր փոփոխության դեպքում այն ավտոմատ կերպով ստուգելն ու թեստավորելն է։
.github/workflows/ci.yml
, .gitlab-ci.yml
կամ Jenkinsfile
)։CD-ն ապահովում է, որ թեստերն անցած կոդը ավտոմատ կերպով տեղակայվի սերվերային կամ ամպային միջավայրում։
Համախբելով ինֆորմացիան հոդվածի վերջում կտեղադրեմ իմ git repository-ն, որտեղ կլինի մի քանի օրինակ։
Բացի այդ այժմ ներկայացնեմ .yml ֆորմատի մասին և օգտվելու կանոնները։
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-ն օգտագործում է եզակի տարածություն (indentation) հիերարխիան սահմանելու համար (ոչ թե փակագծեր կամ մակնշման տեգեր, ինչպես JSON-ում կամ XML-ում)։
app:
name: "My Application"
version: 1.0
environment: "production"
🔹 Տարածությունները պարտադիր են, անհրաժեշտ է օգտագործել 2 կամ 4 բացատ (ոչ թե tab)։
server: "localhost"
port: 8080
debug: true
🔹 Տեքստային արժեքները կարող են լինել չակերտներով "string"
կամ առանց դրանց։
YAML-ում ցանկերը (arrays) ներկայացվում են "-" նշանով։
freamworks:
- React
- Vue
- Angular
🔹 Կարող են լինել նաև բանալի-արժեք ձևաչափով.
database:
mysql:
version: "8.0"
port: 3306
psotgresql:
version: "15"
port: 5432
Եթե անհրաժեշտ է գրել բազմատողային արժեք, օգտագործվում է | (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-ը թույլ է տալիս տվյալների կրկնակի օգտագործում &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-ի Սխալներից Խուսափելու Խորհուրդներ
❌ Tabs-ի օգտագործումը
✅ Օգտագործեք 2 կամ 4 բացատ
Մանրամասն ինֆորմացա կարող ես տեսնել իմ git repository-ում