I recently setup a new CI/CD platform for a project written in Python based on my default choice of Jenkins, however I noticed that the VPS I was running it on kept killing Jenkins because I was running out of RAM. Sure enough, “free -m” revealed that I had under 20M free on the system just by starting Jenkins.
I tried tweaking the Java memory requirements but that just prevented Jenkins from running at all, so I started looking for a Jenkins replacement that I can run happily on my systems (i.e. “behind the firewall”) with minimum RAM requirements and support private repos on github/bitbucket (I don’t ask for much do I? 😉 ).
Strider also has plugins for Slack so that we can be notified when builds pass or fail.
Installation of Strider on a fresh installation is relatively straight forward and this article is the first in what I hope will become a series on how to use Strider with Python to automatically test and deploy your code.
To install Strider on Ubuntu 14.04 (assuming a fresh installation), type the following commands as the root user:
apt-get update && apt-get upgrade apt-get install mongodb nodejs-legacy npm git python-virtualenv python-dev useradd -s /bin/bash -m -d /home/strider -c "strider" strider usermod -aG sudo strider npm install -g strider
I know that this is all very manual, however I haven’t had a chance to package this into a chef recipe or ansible playbook yet!
Once you have successfully installed Strider, create an upstart script at /etc/init/strider.conf with the following content:
#!upstart description "Strider upstart job" start on startup stop on shutdown script export PORT=4000 export DB_URI="[Your MongoDB URI]" # NOT REQUIRED IF RUNNING ON LOCALHOST export SMTP_HOST="[YOUR MAIL SERVER]" export SMTP_PORT="[YOUR MAIL PORT]" export SMTP_USER="[YOUR MAIL USER]" export SMTP_PASS="[YOUR MAIL PASSWORD]" export SERVER_NAME="[IF NOT http://localhost:3000]" export STRIDER_CLONE_DEST="/home/strider/builds/" export PLUGIN_BITBUCKET_APP_KEY="[BITBUCKET APP KEY]" export PLUGIN_BITBUCKET_APP_SECRET="[BITBUCKET APP SECRET]" export PLUGIN_GITHUB_APP_ID="[Your Github Client ID]" export PLUGIN_GITHUB_APP_SECRET="[Your Github Client Secret]" echo $$ > /var/run/strider.pid exec sudo -u strider \ DB_UIR=$DB_URI \ SERVER_NAME=$SERVER_NAME \ PLUGIN_GITHUB_APP_ID=$PLUGIN_GITHUB_APP_ID \ PLUGIN_GITHUB_APP_SECRET=$PLUGIN_GITHUB_APP_SECRET \ PLUGIN_BITBUCKET_APP_KEY=$PLUGIN_BITBUCKET_APP_KEY \ PLUGIN_BITBUCKET_APP_SECRET=$PLUGIN_BITBUCKET_APP_SECRET \ PLUGIN_BITBUCKET_HOSTNAME=$SERVER_NAME \ SMTP_HOST=$SMTP_HOST SMTP_PORT=$SMTP_PORT \ SMTP_USER=$SMTP_USER SMTP_PASS=$SMTP_PASS PORT=$PORT STRIDER_CLONE_DEST=$STRIDER_CLONE_DEST \ strider >> /var/log/strider.log 2>&1 end script
The next step is to create a strider admin user that we can use to log in to the system:
su - strider strider addUser
Follow the prompts and you will end up with an administrative user that we can log in with
Connecting to MongoDB URL: mongodb://localhost/strider-foss Enter email : firstname.lastname@example.org Is admin? (y/n) [n]y Enter password : ******** Email: email@example.com Password: **** isAdmin: y OK? (y/n) [y]y adding User added successfully! Enjoy.
and now we can start the service:
Give your host a few seconds to spool up and then you should be able to access Strider at http://<your-host-name>:4000.
I found it incredibly intuitive to configure my jobs etc once I had logged in to Strider and linked it to my Bitbucket account, and running them is even easier!
I’m going to work with Strider for the next few daysso I’ll post more here once I’ve had a good play with it.
EDIT: With Strider running on the VM and executing a job, I still have 186M free in RAM – much better than Jenkins!