Poniższy artykuł powstał we współpracy z 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 rsync
i sftp
.
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.
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
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.
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?