Skip to main content

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]
tip

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 FTP
  • FTP_USERNAME - nazwa usera
  • FTP_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:

tip

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.

Źródła

  1. https://github.com/SamKirkland/FTP-Deploy-Action