Sobes.tech
Junior

Ի՞նչ է տեղի ունենում, երբ GitLab-ը ներբեռնում է կոդը։

sobes.tech AI

Պատասխան AI-ից

Հետո, ինչքան որ կցանկանաք բեռնել կոդը (ռեպոզիտորիայի կլոնավորում), GitLab CI/CD իրականացնում է պայպլայն — աշխատանքների (jobs) և փուլերի (stages) հավաքածու, որոնք սահմանված են .gitlab-ci.yml ֆայլում ռեպոզիտորիայի հիմնական թղթապանակում:

Հիմնական փուլերը սովորական պայպլայնի հետո բեռնելու կոդը՝

  1. Stages: Պայպլայնը բաժանվում է փուլերի, որոնք կատարվում են հերթականությամբ։ Մի փուլում գտնվող աշխատանքները կարող են կատարվել միաժամանակ։
  2. Jobs: Ամեն աշխատանք կատարվում է առանձին Runner-ում։ Runner-ը գործակալ է, որը վերցնում է աշխատանքը GitLab CI/CD-ից և իրականացնում է այն։
  3. Commands: Ամեն աշխատանքում կատարվում են script բաժնում նշված հրամանները .gitlab-ci.yml-ում։ Այս հրամանները կարող են ներառել՝
    • նախագծի հավաքում (օրինակ՝ կոդի կոմպիլացիա, արգումենտների հավաքում)։
    • թեստեր գործարկել (յուրային թեստեր, ինտեգրացիոն թեստեր և այլն)։
    • կոդի որակի ստատիկ վերլուծություն (linting, ստատիկ վերլուծություն)։
    • Docker պատկերների ստեղծում։
    • Դեպլոյ (տարածում) թեստային, staging կամ production միջավայրում։
    • այլ անհրաժեշտ գործողություններ։
  4. Dependencies (Հետևյալություններ): Աշխատանքները կարող են կախված լինել նախորդ աշխատանքների արդյունքներից, օգտագործելով needs բանալի բառը։
  5. Artifacts (Արտեֆակտներ): Աշխատանքների արդյունքները (օրինակ՝ կոմպիլացված կոդ, թեստերի հաշվետվություններ, Docker պատկերներ) կարող են պահպանվել որպես արտեֆակտներ, որոնք հասանելի են ներբեռնելու կամ օգտագործելու հաջորդ աշխատանքներում։
  6. Caching (Կեշավորում): Հետևյալությունները կամ ժամանակավոր ֆայլերը կարող են կեշավորվել աշխատանքների միջև՝ կատարման արագացման համար։
  7. Reporting (Հաշվետվություն): Կատարման արդյունքները (հաջողություն/չհաջողություն), լոգերը և արտեֆակտները հասանելի են GitLab ինտերֆեյսում:

Նմուշային .gitlab-ci.yml կառուցվածքը՝

stages: # Փուլերի սահմանում
  - build
  - test
  - deploy

build_job: # Աշխատանքի սահմանում
  stage: build # Փուլի մաս
  script: # Կատարելի հրամաններ
    - echo "Building the project..."
    - mvn package # Maven-ի համար կառուցման օրինակային հրամանը
  artifacts: # Արտեֆակտների պահպանում
    paths:
      - target/*.jar

test_job:
  stage: test
  script:
    - echo "Running tests..."
    - mvn test # Թեստերի գործարկման օրինակ
  needs: # Նախորդ աշխատանքի կախվածություն
    - build_job

deploy_job:
  stage: deploy
  script:
    - echo "Deploying the application..."
    - docker build -t my-app . # Docker պատկեր ստեղծելու օրինակ
    - docker push my-app # Պատկեր ուղարկելու օրինակ
  only: # Շրջանակային պայման
    - main # Միայն main ճյուղում կատարելու համար

Այսպիսով, կոդը բեռնելուց հետո, GitLab CI/CD-ը կազմակերպում է որոշված աշխատանքային գործընթացը, որը ուղղված է հավելվածի կառուցմանը, թեստավորմանը և տեղակայմանը։