Continuous Integration (and Delivery)

Hello! I’m wondering what are the suggested ways to practice continuous integration on Roblox.

I want to cut out as much interaction with Roblox Studio as possible. I admit I’m spoiled by Visual Studio Code as well as the npm ecosystem.

I know the current means of practicing continuous integration on Roblox in terms of packages / public modules is distributing them through GitHub or the Toolbox (not good) or requiring a module through its ID (really not good) and testing through Lemur with either Travis, GitHub Action, or something else in that realm.
I would want to test less the source but a .rbxl or .rbxm file as a whole.

I know the current means of testing entire games on Roblox is typically through TestService or perhaps some proprietary framework? But that doesn’t help me much.

I was thinking there might be some way to execute a .rbxl file through studio? Although there’s a few issues I see with that.

I was also thinking that you could run the item locally and, on success, using HttpService from Studio to do the GitHub commit through a call with a GitHub personal access token. Although that’s not very secure and I’m unsure if https works? I’m unfamiliar with it.

TLDR

How do I practice Continuous Integration? What methods have you used before? What about them worked or was inconveniencing?

Visual Studio Code supports lua, but not roblox’s version of lua. This can lead to missing some errors that could have been identified in Roblox Studio. I highly urge you to use the tools provided by Roblox studio as it is the easiest to test, debug and troubleshoot.

1 Like

Continuous integration here refers to runtime tests.

As for Visual Studio Code support, I use luacheck with Quenty’s wonderful luacheck-roblox with the Visual Code extension vscode-lua (which then uses said luacheck configuration to understand the Roblox environment).

I can also generate EmmyLua annotations for rich text support beyond Roblox’s static implementation as found in their static autocomplete.

Roblox Studio’s current environment doesn’t support virtually any tooling that I’d actually desire.

This question is less about the fidelity of using Visual Studio Code, but how I would go about automating tests (and less importantly, delivery to a repository upon a success).