Ruby on Rails was the first major web framework to include automated tests as part of every new project. The effects have been enormously positive. Many developers have learned to write tests well, which in turn helped them get better at design. Experienced developers were drawn by Rails’ focus on productivity and beautiful code. Their […]
Rails Testing Handbook: A Free Ebook to Help You Build Better Apps
Bugs and messy code slow down development, and can make complex projects fail. We write code with good intentions, but in practice as complexity increases we need a system to help us avoid problems. This is where BDD (Behavior-driven Development) can make a huge difference: it provides us with a sustainable process for continuously producing […]
How to Deploy Rails Applications With Ansible, Capistrano and Semaphore
Introduction In this tutorial, we’ll cover how to create a server with Amazon Web Services, do configuration management with Ansible, deploy Rails applications with Capistrano, and how to do continuous integration with Semaphore. All the code from this tutorial is available in a repository on GitHub. If you get stuck, you can always compare it […]
PhantomJS Is Dead, Use Chrome Headless in Continuous Integration
If you’ve been using PhantomJS for continuous integration, please switch to Headless Chrome. Semaphore provides recent versions of both Chrome and chromedriver preinstalled out of the box.
How Kajabi Got to a 10-minute CI Build for 100k Lines of Rails Code
This is a guest post by Brendon Murphy, CTO at Kajabi. Read it to find out how Kajabi got to a 10-minute CI build for 100k lines of Rails code and got rid of tedious manual test suite balancing with Semaphore Boosters, fully automated parallel CI for Rails. Kajabi is a SaaS company positioned squarely […]
Testing Middleware in Laravel with PHPUnit
Introduction In this tutorial, we will show you how to test middleware in Laravel applications. If you are not familiar with the concept of middleware, it acts as a middle man between a request and a response. It’s a type of filtering mechanism. Using the AuthMiddleware in Laravel as an example, users who are not […]
Easier Secrets Management Through the Semaphore UI
Manually adding shared environment variables and configuration files between projects can be time consuming and error prone, especially for organizations with many projects. Secrets are a way of storing and grouping that sensitive data. Semaphore now allows you to create and manage secrets through the UI.
On Building a React Native CLI
In the Developer Interview series, we talk to engineers who use Semaphore. We pick their brains about how they work, what wisdom they would like to pass on, and the most challenging problems theyβve faced during development. This time around, we had the pleasure to talk to Gant Laborde, a member of the Ignite team […]
7 Ways Continuous Delivery Helps Build a Culture of Learning
At the heart of continuous delivery is a fast feedback loop that immediately shows developers the effects of their work. Mistakes are found and fixed quickly, while beneficial changes can be released and deployed to customers without having to wait for a distant future release date. This rapid feedback helps build an organizational culture of […]
Our 2018 Internal Hackathon: Things Built and Problems Solved
Just like last year, the team behind Semaphore took 2 days off from our usual jobs and went on to work on the things that excite us, but are not part of our day-to-day work. Read on to find out about the things we’ve built and problems solved over these two days.
How par8o Sped up Rails CI Builds 8x with Semaphore Boosters
Read it to discover how par8o reduced build time from over 2 hours to 13 minutes with Semaphore Boosters, fully automated parallel CI for Rails.
Updating Services in a Docker Swarm Mode Cluster
In this series of tutorials, we’ve seen how to establish a Docker Swarm cluster, schedule services to the cluster’s nodes, and make those services consumable from within and outside the cluster. Deploying services, however, is not necessarily a one-time activity. Things change, and there needs to be a mechanism for updating services, after they’ve initially […]
Dec 12-17 Network Incident Report
From Tuesday, December 12 until Sunday, December 17, the Semaphore build cluster suffered from sporadic network instabilities due to a faulty device at a Tier 1 network provider.
On Building a Container Engine
Learn more about the engineers and the workflow behind rkt, an open source container engine for Linux.
On Building Open Source Solutions
In the Developer Interview series we talk to engineers who use Semaphore and pick their brains about how they work, what wisdom they would like to pass on, and the most challenging problems theyβve faced during developing. This time, we spoke to Emile Vauge, the creator of an open source project, Traefik.