Serwer w repozytorium na Github z synchronizacją plików z FTP
Ten poradnik pokaże jak uruchomić prywatne repozytorium plików na Github wraz z automatycznym wgrywaniem zmian na FTP serwera. Zapewni nam to przede wszystkim backup, wgląd do zmian i szybkość aktualizacji.
Obsługę Github/git nauczysz się z licznych poradników w internecie, tutaj przykładowy.
Utworzenie repozytorium z plikami
Tworzymy nowe repozytorum git na Github. Zaznaczamy typ Private jeżeli nie chcemy, aby było publicznie dostępne.
Wgrywamy do repozytorium pliki naszego serwera, które chcemy zmienić. Będę edytował plik konfiguracyjny
serwera MTA mtaserver.conf
oraz zasób [admin]
dlatego moja struktura katalogów wygląda tak:
.
└── mods
└── deathmatch
├── mtaserver.conf
└── resources
└── [admin]
Struktura katalogów musi odzwierciedlać strukturę katalogów na FTP, to znaczy, że np. folder /mods
musi być w repozytorium
pod taką samą ścieżką, a nie np. pod /maciek/mods
.
Utworzenie Github Actions
Tworzymy teraz plik Github Actions, który po wykonaniu zmiany w repozytorium, wyśle te zmiany na FTP.
Utworzenie sekretów z danymi autoryzacyjnymi FTP
Przejdź do ustawień repozytorium na Github (Settings -> Security -> Secrets -> Actions) i dodaj dane do logowania FTP wg wzoru:
FTP_HOST
- host FTPFTP_USERNAME
- nazwa useraFTP_PASSWORD
- hasło
Przykład tworzenia sekretu FTP_USERNAME
:
Tworzenie pliku definiującego Github Action workflow
Utwórz w repozytorium plik .github/workflows/ftp-deploy.yml
(katalog .github
, w nim katalog workflows
,
a w nim plik ftp-deploy.yml
) z zawartością:
on: push
name: 🚀 Deploy to ServerProject on push
jobs:
web-deploy:
name: 🎉 Deploy
runs-on: ubuntu-latest
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v4
- name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
server: ${{ secrets.FTP_HOST }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
exclude: |
**/.git*
**/.git*/**
**/resource-cache/**
**/node_modules/**
fileToExclude.txt
W sekcji exclude
możesz zamieścić wszystkie wyjątki jakich nie chcesz wgrywać na FTP.
Po wgraniu pliku do repozytorium powinien wystartować automatycznie job wgrywający pliki z naszego repozytorium na FTP serwera.
Jeżeli otrzymasz błąd spróbuj zrestartować Action (Re-run jobs) lub utwórz nowy commit w repozytorium.
Po kliknięciu w job możesz podglądać logi. Jeżeli operacja zakończy się sukcesem pokaże się zielony znaczek:
Nie wgrywaj do repozytorium plików, do których edycji możesz nie mieć uprawnień FTP. W przypadku
serwera MTA takim plikiem jest /mta-server
. Spowoduje to błąd podczas wykonywania jobu.