Looking for development environment (dev, staging, production) solutions


I work full-time in web development and in the company I work in we employ a deployment environment methodology (developing in development -> testing in staging -> deploying to production once testing is done).

My experience with developing in Garry’s Mod lua is:

  1. Editing files directly in a remote server via FTP
  2. Developing locally and then manually pushing code after every major update

After doing the above for a while I’ve come to the conclusion that these methods are simply not fast enough while also being error prone, such as sometimes forgetting to carry over some files from the beta server to live, breaking some features. This is especially true in the case of direct FTP file editing.

Basically, what I’m looking for is a method to:

  1. Develop Garry’s Mod lua locally, if needed, using a development database (local/remote);
  2. Commit changes to source control;
  3. Pull the changes via source control in staging (or beta, which would be a remote server);
  4. Test a bunch of implemented features, give beta testers a try at breaking the implementation;
  5. If all is well, pull the changes via source control in production, without the requirement to do much testing there.

Have any of you found some solutions to work in this, or similar, way?

Look into remote desktop connection/Dedicated servers?

Just use github or free alternative: bitbucket.

None of you have really answered his question… He isn’t just asking how to host some files in a version control repository…

He wants to be able to code locally, commit his changes to version control, deploy his changes to a staging environment and give his beta testers a chance to test things and then deploy into a production environment .

There are a couple of ways of handling this, For ScriptFodder we use this: http://deployer.org/ and it works quite nicely, we have some Slack commands to trigger deployments. I know of a community that used this: https://www.deployhq.com/ and it seemed to work quite well for them.

If you are looking for a version control solution I’d use Git but depending on what you are storing in version control you might want to make sure that the host has Git LFS (https://git-lfs.github.com/) I know GitHub support it, not sure about any other Git providers.

I appreciate your answer, that’s exactly what I was looking for, I’ll investigate http://deployer.org .

As for version control I’m using git and avoiding storing any large files, so sticking only to lua and text files, therefore I shouldn’t need Git LFS, but it’s useful information regardless.

Thanks again!

EDIT: Reading a bit more on Deployer, is it used only for PHP projects? I’m looking to have development environments for a gamemode I’m working on.

It’s not only for PHP projects, You configure it in PHP, it might be helpful for you to look at the recipes: https://github.com/deployphp/deployer/tree/master/recipe

My mistake, thank you.