CI/CD pipeline-ის გამართვა
რა არის CI/CD pipeline-ი ? 🤔
CI/CD pipeline-ი არის ჩვენი პროექტის გატესტვის, სერვერზე გადატანის, აწყობის პროცესის გაავტომატიზირება. ამ პროცესის ავომატიზირება იმისთვის არის კარგი, რომ დეველოპერს დრო არ დაეხარჯოს ამ ყველაფრის გაკეთებაში ყოველ ცვილებაზე და ასევე იმისთვის, რომ ადამინაური შეცდომები ამ პროცესში მინიმუმამდე დავიყვანოთ. რაც მთავარია ყველა დეველოპერს გვიყვარს 5 წუთის საქმის ავომატიზაციაზე 4 საათის დახარჯვა, მაგრამ იმედია, რომ ამ სტატიის საშუალებით თქვენ არ მოგიწევთ 4 საათის დახარჯვა.
CI/CD pipeline-ის კონფიგურირება
1) SSH key-ის გენერირება
ssh key იმისთვის საჭიროა, რომ github-მა ჩვენს სერვერზე შესვლა შეძლოს, ამის მიღწევა კი შეგვიძლია ssh key-ის გარეშეც, მაგრამ ეს გზა ბევრად უსაფრთოა და არც ისე ძნელი. მოდი დავიწყოთ...
პირველი რიგში რა თქმა უნდა შევიდეთ სერვერზე:
ამის შემდეგომ შევქმნათ ssh key შემდეგი ბრძანებით:
აქ რამოდენიმე შეკითხვას დაგისვამთ, მაგრამ ყველა მათგანზე default-ების არჩევა ჯობია. ამ ბრძანებით შეიქმნება public და private ssh key-ები. ჯერ მხოლოდ public-ი დაგვჭირდება. მის სანახავდ კი ტერმინალში ჩაწერეთ:
ამ ბრძანების output-ი დააკოპირეთ, შემდეგ კი გაუშვით ბრძანება:
2) SSH key-ების github-ზე დამატება
წინა სექციაში შექმნილი key-ები უნდა ჩავამატოთ github-ზე რამოდენიმე ადგილას.
public key ჩავამატოთ ჩვენს პროფილზე შემდეგნაირად:
გადავიდეთ სეთინგებში
სეთინგებში ვიპოვოთ SSH and GDP keys
შემდეგ ჩავამატოთ ახალი ssh key:
აქ უნდა ჩავწეროთ ჩვენი public key-ი რომელიც უნდა ვნახოთ
cat ~/.ssh/id_rsa.pub
-ის გაშვების საშუალებით. სახელს მნიშვნელობა არ აქვს, მაგრამ ეცადეთ, რომ გასაგები დაარქვათ, მომავალში შეიძლება ბევრის ჩამატება დაგჭირდეთ.
ჩავამატოთ რამოდენიმე repository-ის secret:
1) SSH_HOST რომელიც იქნება ჩვენ სერვერის ip address
2) SSH_USERNAME რომელიც იქნება ჩვენი user-ის სახელი(ის, რომელსაც ssh-ის დროს ვიყენებთ)
3) SSH_KEY რომელიც იქნება ჩვენი private key, რომლის მოპოვება შეგვიძლია შემდეით ბრძანებით:
ამ ბრძანების შედეგი დააკოპირეთ მთლიანად, თავში და ბოლოში, რაც უწერია ეგენიც.
3) CI/CD pipeline-ის გაწერა
დაა დადგა დრო, რომ მართლა გავწეროთ CD Pipeline. პროექტში შევქმნათ ორი საქაღალდე: პირველი, .github პროექტის რუტში და workflows უნდა მოვათავსოთ .github-ის შიგნით. workflows-ში ჩვენ უნდა შევქმნათ ფაილი, ამ ფაილის სახელს მნიშვნელობა არ აქვს მაგრამ მაინც აჯობებს, რომ გასაგები სახელი დავრქვათ. ასე, რომ მოდი შევქმნათ yml ფაილი სახელად - deploy.yml
ამ ფაილში ჩვენ უნდა ჩავეწეროთ შემდეგნარი კონფიგურაცია:
კაი მოდი ავხსნათ აქ რა ხდება, სექციებად:
აქ უბრალოდ აღწერილია თუ რა შემთხვევაში უნდა გაეშვას github workflow. ამ შემთხვევაში github workflow გაეშვება main ბრენჩზე ნებისმიერი დაფუშვისას(commit, merge, etc...)
ჩვენს job-ს ვეუბნებით რა გარემოში გაუშვას github workflow.
და ეს არის, რა თქმა უნდა მთავარი ნაწილი. ჩვენ სანამ "Deply to Server"-ამდე მივალთ გვაქ ამ workflow-ს CI გაწერილი იმისთვის რო ლინტერი გავუშვათ, ამისთვის ჩვენ ვიყენებთ ორ დამხმარე action-ს actions/checkout და actions/setup-node-ს checkout-ი ჩვენი პროქტს აკოპირებს კონტეინერში რომელიც action-ის დროს შეიქმნა setup node-ი კი ალბათ როგორ მიხვდი node-ს აყენებს ამ კონტეინერში, რის შემდეგაც საჭირო ბრძანებები ეშვება იმისთვის რო linter გაეშვას, ლინტის დროს თუ არ აღმოჩნდა პრობლემა მაშინ ჩვენ private ssh key-ს ჩავამატებ container-ში, რის შემდეგაც ssh-ის საშუალებით შევალთ ჩვენ სერვერზე და იქ საჭირო ბრძანებებს გავუშვებთ იმისთვის რომ სერვერზე ავიდეს ჩვენი ცვილებები
თუ ყველაფერმა წარმატებით ჩაირა ამ ცვილებების ატანის შემდეგ workflow-ი უნდა გაეშვას და ცვილებები უნდა აისახოს სერვერზე. თუ ეს მოხდა, გილოცავვვ, მარა მოდი კითხვა გააგრძელე რამოდენიმე რაღაც უნდა გაჩვენო, და თუ არ მაქ მოსალოცად საქმე მაინც გააგრძელე შეიძლება დაგეხმაროს გასწორებაში
Last updated