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 high-quality software, with clean code and automated tests as a side effect.

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 against the code in there which is known to work. Before we jump into creating…

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.

Docker Image Size – Does It Matter?

Does Docker image size matter? The answer I usually hear is “yes”. The logical question that follows is “why?”. I’ve heard the following two answers too often for my liking: A smaller image takes less disk space. A large image is difficult to upload. It takes a long time. Although both these statements sound like they make sense, neither is generally true.

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 logged will always be redirected to the login page when trying to make requests which…

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. 

Building a React Native CLI: a Developer Interview with Infinite Red Ignite

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 and chief technology strategist for the San Francisco company Infinite Red.

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 learning and responsibility.

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

This is a guest post by Kendal Miller, Senior Engineer at par8o. 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. par8o is a platform designed for healthcare teams to coordinate, communicate, and close the loop on patient referrals – for better relationships with providers and patients. par8o also offers a chat platform to…

Updating Services in a Docker Swarm Mode Cluster

Introduction 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 been deployed. This tutorial explores how services can be updated in-flight, and how these…

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.

Building a Container Engine: a Developer Interview with rkt

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 Alban Crequy, a member of the team working on the rkt container engine and the co-founder and CTO at Kinvolk GmbH.

Building Open Source Solutions for Microservices: Meet Emile Vauge of Traefik

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.

1 2 3 4 5 28