Bloga Geri Dön
Tutorial2 dk. okuma

GitHub Actions ile FiveM CI/CD: Dağıtımları Otomatikleştirin

GitHub Actions kullanarak FiveM resource'ları için CI/CD pipeline'ları kurun. Kesinti süresi olmadan linting, testler, artifact derlemeleri ve sunucunuza otomatik dağıtım.

Agency Scripts

Agency Scripts Kurucusu ve Baş Geliştiricisi

FiveM Geliştirme İçin Neden CI/CD?

Sürekli Entegrasyon ve Sürekli Dağıtım, FiveM scriptleri için gereksiz yere abartılı görünebilir; ancak projelerinizin karmaşıklığı arttıkça ve ekibiniz genişledikçe otomatik iş akışları paha biçilmez hale gelir. CI/CD, sözdizimi hatalarını sunucunuza ulaşmadan önce yakalar, katkıda bulunanlar arasında kod kalitesi standartlarını uygular, sürüm yükseltmeyi ve changelog oluşturmayı otomatikleştirir, sürümleri tutarlı bir şekilde paketler. GitHub Actions, genel depolar için ücretsiz CI/CD ve özel depolar için cömert ücretsiz kullanım dakikaları sunarak FiveM geliştiricileri için ideal bir platform sağlar.

Lua Linting Kurulumu

Standart Lua statik analiz aracı Luacheck kullanarak otomatik linting ile CI hattınızı başlatın. Bir .github/workflows/lint.yml her push ve pull request sırasında çalışan dosya. İş akışı Luacheck'i LuaRocks aracılığıyla yüklemeli ve ardından özel bir .luacheckrc aşağıdakiler gibi FiveM global değişkenlerini tanımlayan yapılandırma: Citizen, TriggerServerEvent, ve altyapıya özel diğer fonksiyonlar. Bu, kod canlıya geçmeden önce tanımlanmamış değişken referanslarını, kullanılmayan yerel değişkenleri ve stil tutarsızlıklarını yakalar.

TypeScript Build Doğrulaması

FiveM projeniz TypeScript kullanıyorsa, TypeScript kaynaklarınızı derleyen ve hiçbir tür hatası olmadığını doğrulayan bir derleme adımı ekleyin. Proje bağımlılıklarınızı npm ile yükleyin, ardından TypeScript derleyicisini denetim modunda çalıştırın. Bu, her pull request'in geçerli JavaScript çıktısı üretmesini sağlar ve çalışma zamanı hatalarına yol açabilecek tür uyuşmazlıklarını yakalar. Olası sorunları eksiksiz tespit edebilmek adına, oluşturulan Lua veya JavaScript çıktısını TypeScript kaynağıyla birlikte doğrulamak için bu adımı linting öncesine dahil edin.

Otomatik Sürüm Yönetimi

Yayınlama iş akışınızı otomatikleştirmek için GitHub Actions kullanın. Aşağıdaki gibi bir sürüm deseniyle eşleşen bir etiket gönderdiğinizde v*.*.*, sürüm numarasını ayıklayan ve bunu şu konumda güncelleyen bir iş akışını tetikleyin: fxmanifest.lua, son etiketten bu yana olan commit mesajlarından bir changelog oluşturur, derlenmiş varlıkları derler ve paketlenmiş resource'u indirilebilir bir artifact olarak içeren bir GitHub Release oluşturur. Bu, manuel sürüm hazırlığını ortadan kaldırır ve her sürümün tutarlı ve eksiksiz olmasını sağlar.

Otomatik Test Stratejileri

FiveM yerleşik bir test frameworküne sahip olmasa da, Busted gibi standart Lua test araçlarını kullanarak paylaşılan utility fonksiyonlarını ve iş mantığını test edebilirsiniz. Test ortamınızda FiveM'e özel global değişkenleri ve native fonksiyonları mocklayın, ardından saf mantık fonksiyonlarınıza karşı birim testleri çalıştırın. Entegrasyon testleri için, resource dosyanızı yükleyen ve bir test clientı kullanarak otomatik senaryolar çalıştıran, Docker konteynerinde headless bir FiveM sunucusu kurmayı düşünebilirsiniz. Bu testler regresyonları erkenden yakalar ve sürüm kalitenize olan güveni artırır.

Dağıtım Otomasyonu

Canlı sunucuları yöneten ekipler için CI/CD işlem hattınızı dağıtımı yönetecek şekilde genişletin. Başarılı bir derleme ve test çalıştırmasından sonra güncellenen kaynağı hazırlık sunucunuza dağıtmak için SSH veya FTP eylemlerini kullanın. Kaynağın hatasız başladığını doğrulayan bir duman testi çalıştırın, ardından manuel onay aşamasıyla canlı ortama taşıyın. Sunucu kimlik bilgilerini GitHub Secrets olarak saklayın ve dağıtım iş akışlarını korumalı dallarla sınırlandırın. Bu iş akışı, canlı sunucunuza yalnızca test edilmiş ve incelenmiş kodun ulaşmasını sağlar ve topluluğunuzu aksatan bozuk güncellemelerin dağıtılması riskini azaltır.

Başlamaya Hazır mısınız?

Scriptleri mağazamızdan edinin veya destek, güncellemeler ve gelecek yeniliklere göz atmak için Discord'a katılın.