Deploy przez SSH, SFTP lub rsync w Buddy.works

Ten wpis jest 4 częścią z 4 w kursie CI/CD z Buddy.works

Po poprzednich wpisach wiele osób pytało mnie, w jaki sposób automatycznie wrzucać ich aplikacje z repozytorium GitHub na hosting używając SSH (SFTP) w Buddy.works. Czy w ogóle jest to możliwe? Oczywiście! A Buddy znacznie to ułatwia dzięki predefiniowanej akcji.

Poniższy artykuł powstał we współpracy z Buddy.works.

Logo Buddy.works

Deploy przez SSH

SSH to „Secure Shell” i służy do zdalnego łączenia się z komputerami, a w naszym konkretnym przypadku z serwerem. Można go używać do uruchamiania poleceń na serwerze, a także do pobierania i wrzucania plików. Do tego ostatniego służą różne narzędzia: SFTP, SCP, rsync i inne. Wiele hostingów umożliwia łączenie się z nimi przez SSH, a jednym z popularniejszych polskich dostawców jest znakomity hosting MyDevil.

Przykładowo, aby wysłać plik index.html na serwer MyDevil używając scp, możemy użyć polecenia:

scp index.html login@sXX.mydevil.net:/domains/domena.com/public_html/

Podobnie wygląda praca z rsyncsftp.

SFTP i rsync w Buddy

Co istotne, Buddy udostępnia predefiniowane akcje dla SSH, rsync i SFTP. Ciekawą możliwością jest też automatyczny transfer plików z repozytorium na GitHubie bezpośrednio na serwer w opcjach SFTP:

Postanowiłem więc skonfigurować w Buddy.works automatyczny deploy mojego bota na Discordzie na serwer w MyDevil używając SFTP i GitHuba. Do dzieła!

Deploy przez SFTP w Buddy.works

Dodaję nowy pipeline w wybranym repozytorium. Konfiguruję go tak, aby uruchamiał się automatycznie po każdym pushu do brancha master, podobnie, jak to opisywałem w poprzednim wpisie.

Nowy pipeline

Dodaję akcję SFTP i w ustawieniach zaznaczam „GitHub repository”, ścieżkę pozostawiam bez zmian, a następnie uzupełniam dane dostępowe do serwera. Do wyboru jest kilka metod uwierzytelniania. Można podać tam login i hasło, ale ja osobiście zalecałbym udostępniać swoje hasła jak najmniejszemu gronu odbiorców (a najlepiej nikomu). Pozostałe opcje opierają się o klucze SSH i moim zdaniem są bezpieczniejsze. Ja wybieram „Buddy’s SSH key”, czyli klucz Buddy, który będę musiał dodać do swojego serwera. Po wybraniu tej opcji, wyświetlą się polecenia, które należy wykonać na serwerze: dodanie klucza do pliku ~/.ssh/authorized_keys. Ostatnim krokiem jest podanie dokąd mają zostać wrzucone pliki. W moim przypadku jest to /home/login/domains/domena.com/public_nodejs

Konfiguracja SFTP z GitHuba

Buddy sugeruje brakującą akcję SSH

Po powrocie do widoku akcji zauważyłem, że Buddy podpowiada mi, aby dodał jeszcze jakieś komendy uruchamianie przez SSH.

Buddy sugeruje brakujący element, czyli polecenia SSH

Racja! Kompletnie zapomniałem uruchomić npm install i zrestartować aplikację 🙂

cd /home/login/domains/domena.com/public_nodejs
npm i
NODE_ENV=production ENV=production npm run build
devil www restart domena.com

Te polecenia są konkretnie pod MyDevil, ale pewnie na swoim hostingu będziesz musiał/a zrobić coś podobnego 🙂

I… to już! Szybko testuję stworzony pipeline i widzę, że wszystko działa. Konfiguracja tego nie zajęła mi nawet 5 minut.

Podsumowanie

Od teraz po każdym pushu do brancha master, Buddy automatycznie uruchomi zdefiniowane akcje: Aplikacja zostanie wrzucona serwer przez SFTP, zainstalują się zależności i uruchomi się ponownie. Czyż to nie było łatwe?

Nie wysyłamy spamu, tylko wartościowe informacje. W każdej chwili możesz się wypisać klikając „wypisz się” w stopce maila.