Wróć do bloga
Tutorial2 min czytania

CI/CD w FiveM z GitHub Actions: automatyzacja wdrożeń

Skonfiguruj potoki CI/CD dla zasobów FiveM przy użyciu GitHub Actions. Linting, testy, kompilacje artefaktów i automatyczne wdrażanie na serwerze bez przestojów.

Agency Scripts

Założyciel i główny deweloper w Agency Scripts

Dlaczego CI/CD w developmencie FiveM?

Continuous Integration i Continuous Deployment mogą wydawać się przesadą w przypadku skryptów FiveM, ale w miarę jak twoje projekty stają się bardziej złożone, a zespół się powiększa, zautomatyzowane procesy stają się nieocenione. CI/CD wychwytuje błędy składni, zanim trafią one na twój serwer, wymusza standardy jakości kodu wśród współtwórców, automatyzuje podbijanie wersji i generowanie changelogów oraz spójnie pakuje wydania. GitHub Actions oferuje darmowe CI/CD dla publicznych repozytoriów oraz hojny darmowy pakiet minut dla prywatnych, co czyni go idealną platformą dla programistów FiveM.

Konfiguracja lintingu Lua

Rozpocznij swój pipeline CI od automatycznego lintingu za pomocą Luacheck, standardowego narzędzia do analizy statycznej Lua. Utwórz .github/workflows/lint.yml plik, który uruchamia się przy każdym pushu i pull requeście. Workflow powinien instalować Luacheck przez LuaRocks, a następnie uruchamiać go na Twoich plikach Lua z własnym .luacheckrc konfiguracja definiująca zmienne globalne FiveM, takie jak Citizen, TriggerServerEvent, oraz inne funkcje specyficzne dla frameworka. Pozwala to wyłapać odwołania do niezdefiniowanych zmiennych, nieużywane zmienne lokalne i niespójności stylu, zanim kod trafi na produkcję.

Weryfikacja kompilacji TypeScript

Jeśli twój projekt FiveM używa TypeScriptu, dodaj krok budowania, który kompiluje pliki źródłowe TypeScript i sprawdza brak błędów typowania. Zainstaluj zależności projektu za pomocą npm, a następnie uruchom kompilator TypeScript w trybie sprawdzania. Zapewnia to, że każdy pull request generuje poprawny kod JavaScript, oraz wychwytuje niezgodności typów mogące powodować błędy w czasie działania. Umieść ten krok przed lintowaniem, aby zweryfikować wygenerowany kod Lua lub JavaScript równolegle ze źródłami TypeScript, co daje pełne pokrycie potencjalnych problemów.

Zautomatyzowane zarządzanie wersjami

Użyj GitHub Actions, aby zautomatyzować proces wydawania wersji. Gdy wypchniesz tag pasujący do wzorca wersji, takiego jak v*.*.*, uruchom workflow, który wyodrębnia numer wersji, aktualizuje go w Twoim fxmanifest.lua, generuje changelog z opisów commitów od ostatniego tagu, buduje skompilowane assety i tworzy GitHub Release ze spakowanym zasobem jako artefaktem do pobrania. Eliminuje to ręczne przygotowywanie wydań i zapewnia, że każde wydanie jest spójne i kompletne.

Strategie testowania automatycznego

Chociaż FiveM nie posiada wbudowanego frameworka testowego, możesz testować współdzielone funkcje pomocnicze i logikę biznesową za pomocą standardowych narzędzi testowych Lua, takich jak Busted. Zamockuj zmienne globalne i funkcje natywne specyficzne dla FiveM w swoim środowisku testowym, a następnie uruchom testy jednostkowe dla funkcji czystej logiki. W przypadku testów integracyjnych warto rozważyć skonfigurowanie serwera FiveM w trybie headless w kontenerze Docker, który ładuje Twój zasób i uruchamia zautomatyzowane scenariusze za pomocą klienta testowego. Testy te wcześnie wykrywają regresje i budują pewność co do jakości wydania.

Automatyzacja wdrożenia

W przypadku zespołów zarządzających działającymi serwerami rozszerz swój pipeline CI/CD o wdrażanie. Po udanym procesie budowania i testowania użyj akcji SSH lub FTP, aby wdrożyć zaktualizowany zasób na serwerze testowym. Uruchom smoke test weryfikujący, czy zasób uruchamia się bez błędów, a następnie przenieś go na produkcję po ręcznym zatwierdzeniu. Zapisuj dane logowania do serwera jako GitHub Secrets i ogranicz workflow wdrożeniowe do chronionych gałęzi. Taki przepływ pracy gwarantuje, że na działający serwer trafia tylko przetestowany, zrecenzowany kod, co zmniejsza ryzyko wdrożenia wadliwych aktualizacji zakłócających rozgrywkę społeczności.

Gotowy, aby zacząć?

Kup skrypty w naszym sklepie lub dołącz do Discorda, aby uzyskać wsparcie, aktualizacje i sprawdzić nadchodzące nowości.