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 ფაილის სინტაქსის შემოწმება.
    • YAML-ფაილში განსაზღვრული სამუშაოების (jobs) შექმნა.
    • სამუშაოების მიცემა ხელმისაწვდომ რანერებს.
    • რანერი იღებს სამუშაოებს, ჩამოტვირთავს რეპოზიტორიის წყაროს კოდს.
    • ასრულებს მითითებულ ბრძანებებს (შენება, ტესტირება, განთავსება და ა.შ.) თითოეულ სამუშაოზე.
    • არტეფაქტების (შენებული პროგრამები, ტესტის ანგარიშები) და ლოგ ფაილების შენახვა.
    • სამუშაოების შესრულების სტატუსის გაგზავნა GitLab-ში.

    .gitlab-ci.yml სტრუქტურის მაგალითი:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "აპლიკაციის მშენებლობა..."
        - make build
    
    test_job:
      stage: test
      script:
        - echo "ტესტების გაშვება..."
        - make test
    
    deploy_job:
      stage: deploy
      script:
        - echo "აპლიკაციის განთავსება..."
        - make deploy
      only:
        - main  # მხოლოდ main ბრენჩზე პუშის დროს
    
  3. ავტომატური მოქმედებები: GitLab შეუძლია სხვა ავტომატური მოქმედებების განხორციელებაც:

    • Merge Request-ის შექმნა (პუშის დროს სხვა ბრენჩიდან, არა მიზნობრივიდან).
    • Merge Request-ის სტატუსის განახლება.
    • უსაფრთხოების სკანირების დაწყება (თუ შესაბამისი პარამეტრები გააქტიურებულია).
    • სამუშაოების ავტომატური დახურვა ან დაკავშირება (კომიტების ან Merge Request-ის აღწერაში არსებულ საკვანძო სიტყვების საშუალებით).
  4. შეტყობინების სისტემა: GitLab-ის მიერ მომხმარებლებს იგზავნება შეტყობინებები ელფოსტით ან სხვა არხებით (Slack, Mattermost), თუ ისინი გამოწერილი არიან რეპოზიტორიის მოვლენებზე (ახალი კომიტები, პაიპლაინის სტატუსები, კომენტარები).

  5. რეპოზიტორიის მონაცემების განახლება: GitLab-ის შიდა სისტემაში განახლდება რეპოზიტორიის, ბრენჩების, ტეგების და კომიტების ისტორია.

სრული პროცესი მიზნად ისახავს ახალი კოდის ინტეგრირებას საერთო სამუშაო პროცესში, მშენებლობის, ტესტირების და შესაძლო განთავსების ავტომატიზაციას, ასევე დაინტერესებული მხარეების ინფორმირებას.