5

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.

4
  • "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, 2015 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, 2015 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. Aug 27, 2015 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, 2015 at 23:00

2 Answers 2

5

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:

[gogs] 
url="http://[your-gogs-url]/"

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.

3
0

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 and acknowledge you have read our privacy policy.

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