Blog

Artefaktları çoxsaylı serverlərə yerləşdirmək üçün GitHub Actions qurmaq matrisini necə istifadə etmək olar

28.02.2022

23

Keçmişdə mən həmişə, məsələn, kodumu serverə yerləşdirmək və yerləşdirmək üçün çoxsaylı üçüncü tərəf xidmətlərindən istifadə etmişəm. Mən üçüncü tərəf xidmətlərinin sayını minimuma endirmək fikrini bəyənirəm, çünki onlar əlavə xərclər, potensial təhlükəsizlik riskləri və çox vaxt əlavə xərcləri təmin edirlər. Buna görə də Github Actions-a birdən çox serverdə məşhur sıfır fasiləsiz yerləşdirmələri təkrarlaya biləcəyimi yoxlamaq qərarına gəldim. GitHub 2019-cu ildə GitHub Actions-ı təqdim etdi ki, bu da GitHub istifadəçilərinə davamlı çatdırılma boru kəmərlərini qurmaq üçün Fəaliyyətlərdən istifadə etməyə imkan verən iş axınının avtomatlaşdırılması vasitəsidir.


Məqalədən göründüyü kimi, mən bunu bacardım Sizə hər addımı atmazdan əvvəl GitHub Actions-dan əvvəl istifadə etməmisinizsə, pulsuz GitHub Actions: Hello World kursuna nəzər salmağı məsləhət görürəm.

GitHub Fəaliyyət İş axını işlərinin icmalı


Hər bir GitHub Fəaliyyəti iş axını bir və ya bir neçə addımdan ibarət bir və ya bir neçə işdən ibarətdir. Tətbiqimizi yerləşdirmək üçün aşağıdakı işləri yaratmalıyıq:


Yerləşdirmə üçün GitHub Fəaliyyəti qurma artefaktları yaradın
İstehsalda yerləşdirilməyə hazır olan bütün kodları ehtiva edən bir arxiv yaratmaq istəyirəm. İstehsal serverinizdə npm run production kimi əmrləri işlədə bilərsiniz, lakin mən istehsal serverimi orta və təmiz saxlamağı xoşlayıram. Bu, NodeJS-in çoxsaylı serverlərdə yenilənməsi kimi serverə texniki qulluq xərclərini azaldır.


Laravel tətbiqi artefaktlarımız üçün aşağıdakılara nail olmaq istəyirik:

NPM asılılıqlarını quraşdırın.
CSS və Javascript aktivlərini tərtib edin.
Bəstəkar asılılıqlarını quraşdırın.
Quraşdırmamızı arxivləşdirin və lazımsız məlumatları silin (məsələn, node_modules).
Arxivimizi saxlayın ki, onu serverlərimizə yerləşdirək.

Bütün serverlərimizdə buraxılış hazırlayın
Biz yerləşdirmələrimizin sabit və etibarlı olduğuna əmin olmaq istəyirik, yəni ikinci server uğursuz olarkən bir serverin yenilənməsini istəmirik. Hazırlıq bir serverdə uğursuz olarsa, yerləşdirmə ardıcıllığının dayandırılmasını istəyirik.


Buraxılış hazırlıq işinin aşağıdakıları yerinə yetirməsini istəyirik:

Hər buraxılışı saxlayan bir kataloqumuz olduğundan əmin olun.
Nəşrlər arasında məlumatları paylaşan yaddaş qovluğuna malik olduğumuzdan əmin olun.
Aktiv buraxılışla əlaqə saxlayan cari kataloqumuz olduğundan əmin olun.
Quraşdırma fayllarımızı buraxılışlar kataloqumuza çıxarın.

Qarmaqlardan əvvəl isteğe bağlı olaraq işə salın
Bu isteğe bağlı bir xüsusiyyətdir, lakin buraxılış aktivləşdirilməmişdən əvvəl xüsusi əmrləri yerinə yetirmək istəyirəm (məsələn, chmod qovluqları). Beləliklə, bu sözdə qarmaqlardan əvvəl konfiqurasiya etmək üçün bir yol olmalıdır.


Buraxılışı aktivləşdirin
İndi biz heç bir fasilə olmadan yeni buraxılışımızı aktivləşdirməyə hazırıq. Bunu simvolik keçidləri dəyişdirməklə edə bilərik; bu, əsasən cari kataloqumuzla əlaqəli olan əsas buraxılışı relizlər kataloqumuzun daxilindəki yeni buraxılışla əvəz edir. Mən serverlərimdə PHP FPM işlədirəm, ona görə də dəyişiklikləri aşkar etmək üçün PHP FPM-i yenidən yükləmək istəyirəm.


Qarmaqlardan sonra isteğe bağlı olaraq işə salın
Bu, həmçinin isteğe bağlı xüsusiyyətdir, lakin mən məsələn, mənim yerləşdirməmin başa çatması barədə bildiriş göndərmək üçün buraxılış aktivləşdirildikdən sonra xüsusi əmrləri yerinə yetirmək istəyirəm. Beləliklə, bu sözdə qarmaqları konfiqurasiya etmək üçün bir yol olmalıdır.


Təmizləmə
Yeni buraxılışları yüklədiyimizi və çıxardığımızı nəzərə alsaq, hər buraxılışdan sonra daha çox disk yeri tuturuq. Minlərlə buraxılış və tam disklə nəticələnməyəcəyimizə əmin olmaq üçün hər serverdə yaşayan buraxılış artefaktlarının sayını məhdudlaşdırmalıyıq.