Sobes.tech
Middle

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

sobes.tech AI

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

GitLab, երբ ստանում է կոդը (հաճախ git push միջոցով), սկսում է գործընթաց, որը կախված է նախագծի կարգավորումներից.

  1. Webhook-ներ: Երբ նոր կոդ է ստացվում, GitLab-ը կարող է տեղեկացնել արտաքին համակարգերին (օրինակ, CI/CD սերվեր, նախագծի կառավարման համակարգ) HTTP հարցումների ուղարկմամբ: Սա առաջացնում է հաջորդ գործողությունները:

  2. CI/CD պայպլայն: Եթե նախագծում կարգավորված է .gitlab-ci.yml ֆայլը, GitLab Runner-ը գործարկում է CI/CD պայպլայնը: Այս գործընթացը ներառում է՝

    • .gitlab-ci.yml ֆայլի սինտաքսի ստուգում:
    • Տվյալների (jobs) ստեղծում YAML ֆայլի սահմանումներից:
    • Տվյալների տրամադրում հասանելի ռաներներին:
    • Ռաները ստանում է տվյալները, ներբեռնում է ռեպոզիտորիային աղբյուրային կոդը:
    • Կատարում է նշված հրահանգները յուրաքանչյուր տվյալների համար (կառուցում, թեստավորում, տեղադրում և այլն):
    • Ստեղծում է արխիվներ (կառուցված ծրագրեր, թեստային հաշվետվություններ) և լոգ ֆայլեր:
    • Ուղարկում է տվյալների կատարման կարգավիճակը GitLab-ին:

    Օրինակ .gitlab-ci.yml կառուցվածքը՝

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the application..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "Running tests..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying the application..."
        - make deploy
      only:
        - main  # Պայման միայն main ճյուղում push-ի ժամանակ
    
  3. Ավտոմատ գործողություններ: GitLab-ը կարող է կատարել այլ ավտոմատ գործողություններ՝

    • Մերիջ Request (Merge Request) ստեղծում (երբ push է կատարվում այլ ճյուղից՝ բացի նպատակայինից):
    • Մերիջ Request-ի կարգավիճակի թարմացում:
    • Անվտանգության սկանավորումներ (եթե համապատասխան կարգավորումները ակտիվացված են):
    • Աշխատանքների ավտոմատ փակումը կամ կապը (կոմմիտների կամ Merge Request-ի նկարագրության բանալի բառերով):
  4. Հայտարարությունների համակարգ: GitLab-ը ուղարկում է տեղեկացումներ օգտվողներին էլեկտրոնային փոստով կամ այլ ալիքներով (Slack, Mattermost), եթե նրանք բաժանորդագրված են ռեպոզիտորիումի իրադարձություններին (նոր կոմմիտներ, պայպլայնի կարգավիճակներ, մեկնաբանություններ):

  5. Տվյալների թարմացում ռեպոզիտորիում: GitLab-ը ներսից թարմացնում է ռեպոզիտորիու տվյալները՝ ճյուղեր, տեգեր և կոմմիտների պատմություն:

Ընդհանուր առմամբ, այս գործընթացը նպատակ ունի նոր կոդը ինտեգրելու ընդհանուր աշխատանքային գործընթացին, ավտոմատացնել կառուցումը, թեստավորումը և հնարավոր է՝ տեղադրումը, ինչպես նաև տեղեկացնել շահագրգիռ կողմերին։