We’re happy to announce a new feature for a better control of your build queue β queued and started build cancellation strategy that ignores your default branch.
Test-Driving a Stream-powered Elixir Library
In this tutorial, we will test-drive an Elixir library and refactor it to leverage streams, while learning about Umbrella apps and handy testing techniques.
Continuous Deployment of an Elixir Phoenix Application to Heroku with Semaphore
Learn how to deploy an Elixir Phoenix app to Heroku and set up Semaphore to continuously deploy each time tests pass on the master branch.
Rails Techniques: Using Polymorphic Associations
Add flexibility to your Rails models using Polymorphic Associations – Active Record associations that can connect a model to multiple other models.
Faster Rails: Eliminating N+1 queries
N+1 queries are making your Rails app painfully slow. Learn how to eliminate them from your project.
Tips on Treating Flakiness in your Rails Test Suite
To say that flaky tests are annoying is to put it mildly. They can decimate both a developer’s time and productivity, are notoriously difficult to deal with, and are unfortunately a reality of software development. Our collegues have written more general posts in the past about dealing with flaky tests and why it is important. […]
Setting Up Continuous Integration for an Elixir Project Using Semaphore
This tutorial was initially published on DailyDrip. Read the original post here. Introduction What’s the point of writing tests if you aren’t going to ensure they’re always passing? It’s important to set up a continuous integration service very early in a project. In this tutorial, you will learn how to set up continuous integration for […]
What’s the Difference Between Continuous Integration, Continuous Deployment and Continuous Delivery?
Summary Overview Continuous integration, continuous deployment, and continuous delivery are like vectors that have the same direction, but different magnitude. Their goal is the same: make our software development and release process faster and more robust. The key difference between the three is in the scope of automation applied. What gets people who are new […]
Consuming Services in a Docker Swarm Mode Cluster
Introduction This tutorial is the third in our series on container orchestration with Docker Swarm. The first tutorial covered how to bootstrap a Docker Swarm Mode cluster, and the second tutorial covered how to schedule workloads across a Swarm cluster. This tutorial explores the topic of service consumption, both from within and externally to a […]
A First Look at Semaphore’s New API Specification Semantic
We’ve recently started redesigning Semaphore’s public API, and we’ve established some general guidelines and semantics for elements in the URI path. A good understanding of URI path element semantics can ease API usage, so we are presenting it here.
RESTful Integration Testing with WireMock in Java
Introduction In this tutorial, we will demonstrate how to perform integration testing on a Java web application with WireMock, and automate the tests by running them on Semaphore. The aim of integration testing is to expose the faults, defects, or bugs that can exist between various integrated units. This is done by validating their behaviour […]
Writing, Testing, and Deploying a Django API to Heroku with Semaphore
Introduction In this tutorial, you will learn how to write and deploy a Django API to Heroku using Semaphore. You’ll also learn how to run Django tests on Semaphore, and how to use Heroku pipelines and Heroku review apps with Semaphore. If you’d like to use Semaphore to deploy to other platforms, you can find […]
Building and Testing Web Applications with Elm
Introduction Elm is a functional programming language meant for building reliable web applications. It compiles to JavaScript and is well-known for its helpful compiler that promises no runtime errors. JavaScript is the de-facto language for building web applications. Today, we are building most of our web application logic in the frontend with JavaScript, and using […]
Faster Rails: Indexing Large Database Tables Without Downtime
This article is part of our Faster Rails series. Check out the previous article about proper database indexing. As the scope and size of a Rails project grows, actions that were blazingly fast can become slow, and even downright unacceptable. The cause behind this issue can be an exponential growth of your database tables that […]
Speeding Up Rendering Rails Pages with render_async
Adding new code to Rails controllers can bring a couple of problems with it. Sometimes controller actions get really big, and they tend to do a lot of things. Another common problem is an increase in data over time, which can lead to slow page loading time. Adding new code to controller actions can also […]