返回博客
Tutorial1 分钟阅读

FiveM CI/CD 与 GitHub Actions:自动化部署

使用 GitHub Actions 为 FiveM 资源设置 CI/CD 流水线。代码风格检查、测试、构建产物及无停机自动部署到服务器。

Agency Scripts

Agency Scripts 创始人兼首席开发者

为什么 FiveM 开发需要 CI/CD?

持续集成和持续部署对于FiveM脚本来说可能显得过于复杂,但随着项目复杂度增加和团队扩展,自动化工作流程变得非常宝贵。CI/CD可以在代码到达服务器前捕获语法错误,强制执行贡献者的代码质量标准,自动版本提升和变更日志生成,并一致地打包发布。GitHub Actions为公共仓库提供免费CI/CD,私有仓库也有慷慨的免费分钟数,是FiveM开发者的理想平台。

设置 Lua 代码风格检查

使用 Luacheck(标准 Lua 静态分析工具)启动你的 CI 流水线,进行自动化代码检查。创建一个 .github/workflows/lint.yml 文件在每次push和pull请求时运行。工作流应通过LuaRocks安装Luacheck,然后用自定义的 .luacheckrc 定义 FiveM 全局变量的配置,如 Citizen, TriggerServerEvent,以及其他特定框架的函数。这可以在代码进入生产环境之前捕获未定义的变量引用、未使用的局部变量和风格不一致。

TypeScript 构建验证

如果您的 FiveM 项目使用 TypeScript,请添加构建步骤,编译 TypeScript 源代码并验证无类型错误。使用 npm 安装项目依赖,然后以检查模式运行 TypeScript 编译器。这确保每个拉取请求产生有效的 JavaScript 输出,并捕获可能导致运行时错误的类型不匹配。在 lint 之前包含此步骤,以便同时验证生成的 Lua 或 JavaScript 输出和 TypeScript 源代码,全面覆盖潜在问题。

自动化版本管理

使用 GitHub Actions 自动化您的发布工作流程。当您推送匹配版本模式的标签时,例如 v*.*.*,触发工作流,提取版本号并更新您的 fxmanifest.lua,根据自上次标签以来的提交信息生成变更日志,构建任何已编译的资源,并创建包含打包资源的GitHub Release作为可下载工件。这消除了手动发布准备,确保每次发布一致且完整。

自动化测试策略

虽然 FiveM 缺少内置测试框架,但你可以使用标准 Lua 测试工具如 Busted 来测试共享的实用函数和业务逻辑。在测试环境中模拟 FiveM 特定的全局变量和原生函数,然后对纯逻辑函数运行单元测试。对于集成测试,可以考虑在 Docker 容器中设置无头 FiveM 服务器,加载你的资源并使用测试客户端运行自动化场景。这些测试能及早发现回归问题,增强发布质量的信心。

部署自动化

对于管理在线服务器的团队,扩展您的CI/CD管道以处理部署。在成功构建和测试后,使用SSH或FTP操作将更新资源部署到预发布服务器。运行冒烟测试,验证资源启动无误,然后通过手动审批门控推广到生产环境。将服务器凭据存储为GitHub Secrets,并限制部署工作流仅对受保护分支开放。此工作流确保只有经过测试和审查的代码才能到达您的在线服务器,降低部署破坏性更新干扰社区的风险。

准备好开始了吗?

在我们的商店获取脚本,或加入 Discord 获取支持、更新以及新功能预告。