I've got four micro instances running on Digital Ocean. The basic architecture is like this:

A: Gitlab, GitlabCI, HAProxy

B: MongoDB

C: Node web server

D: Node web server

It turns out that Gitlab is pretty heavy - it often times out, and even with pretty significant swap it's clunky. Interestingly, GitlabCI seems to work pretty smoothly - the slowdowns all seem to point to Gitlab. So, time to upgrade.

At this point, all I need the CI server to do is run my deploy script, which does everything else.

I've done some research and settled on GOGS as the Git server I'm planning to use.

Is GitlabCI lightweight enough, and will it work with GOGS? Or, is there another great product out there for lightweight CI?

FWIW, I really like the .yml CI config (ala Travis and GitlabCI).

Also, architecture recommendations welcome.

  • "At this point, all I need the CI server to do is run my deploy script, which does everything else." In that case, why not a Git post-receive hook? Doesn't get more lightweight than that. – nanny Aug 25 '15 at 16:42
  • @nanny - definitely an option. I'd like to see what's available though, there's usually something exciting that I haven't heard of... – Ben Aug 25 '15 at 16:54
  • Are you using Apache on your gitlab server? I found using Nginx was a HUGE decrease in the amount of resources it used to the point that you may get away with it. Though check minimum requirements for Gitlab. Also Gitlab is always being optimised, so ensure that you update regularly. – user3791372 Aug 27 '15 at 14:22
  • @user3791372 - I'm using two node servers behind an HAProxy to serve the application. More concerned with CI post-push here :) – Ben Aug 27 '15 at 23:00

It appears the the defacto solution for now is Drone. It supports GOGS out of the box, and is acting very lightweight so far.

Side note - in the documentation, it indicates you'll need an API key from GOGS. You actually don't, it will run fine with this configuration:


The only "heavy" thing needed here is a Docker image defined later on in the .drone.yml. I used a Node one which checked out at about 1.7 gb.


I wrote http://linci.tp23.org/ to run CI on a micro instance with 500MB of RAM. (It does not support merge requests)

Its wins on light weight tho, jobs are auto-generated bash scripts, so the overhead of a job is a bash process.

Server components are cron, ii, ngircd, syslog, sshd, tsp, nginx, fcgiwrap.

I had to upgrade to 1GB RAM because npm cannot run with 500Mb but this is free (inside the lxc container) i.e. it uses almost no RAM when not doing anything.

linci> free
              total        used        free      shared  buff/cache   available
Mem:        1004600       19196      825112           0      160292      985404
Swap:        524284       55808      468476

ngircd(irc server) is optional if you prefer emails, and/or a STOMP server for desktop notifications.

N.B. Linux only.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.