We are excited to announce that we are now supporting OpenID Connect (OIDC), an open standard for authentication.
Igor Šarčević

Getting Started with Node.js and Mocha
Mocha is a testing library for Node.js, created to be a simple, extensible, and fast. It’s used for unit and integration testing, and it’s a great candidate for BDD (Behavior Driven Development). This article will walk you through its installation and configuration, as well as demonstrate its usage by implementing a color converter that can […]
Visual Workflow Builder: Build CI/CD Pipelines Without Writing YAML
WYSIWYG meets infrastructure as code. Workflow Builder is a visual tool that lets you build serverless CI/CD pipelines on Semaphore without writing YAML.
Semaphore CLI: Forming a Base for a Programmable Semaphore
Being able to control your CI pipeline programmatically, tweak and bend it to your will, is a huge benefit for both small and large organizations.
Introducing the new Semaphore API
We’re happy to announce the release of Semaphore API v2. The new API brings greater clarity, improves usability, and fixes the key issues in API v1. This new version is a complete rewrite of our API, both in terms of functionality, and the underlying design principles. Why is Semaphore releasing a new API version? Semaphore […]
Faster Rails: Eliminating N+1 queries
N+1 queries are making your Rails app painfully slow. Learn how to eliminate them from your project.
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 […]
Faster Rails: Is Your Database Properly Indexed?
If your Rails app is getting slower, here’s how to properly index your database to make your Active Record queries faster.
Customizable Command Timeouts
For a long time, Semaphore has been limiting your build command execution time to a fixed 60 minutes. This restriction worked great for the majority of builds on Semaphore, however there are some cases when this limit is simply not good enough.
Faster Rails: How to Check if a Record Exists
Ruby and Rails are slow — this argument is often used to downplay the worth of the language and the framework. This statement in itself is not false. Generally speaking, Ruby is slower than its direct competitors such as Node.js and Python. Yet, many businesses from small startups to platforms with millions of users use […]
Keeping Logs Available When Rebuilding a Build
Flaky tests can be hard to track down. When you are working on a new feature, your builds can fail because of one or a few unrelated flaky tests.
Lightweight Docker Images in 5 Steps
Deploying your services packaged in lightweight Docker images has many practical benefits. In a container, your service usually comes with all the dependencies it needs to run, it’s isolated from the rest of the system, and deployment is as simple as running a docker run command on the target system.
How to Deploy Node.js Applications with Capistrano
Introduction Capistrano is a popular tool for web application deployment, especially in the Ruby ecosystem where it originated. But Capistrano is being used to deploy applications made in any programming language. It is a perfectly fine tool for deploying Node.js projects too. in the Ruby ecosystem. This article will explain how to set up a […]
Getting Started with SSH
Introduction Over the last fifteen years, SSH has become a standard tool for remote management of Unix-like systems and many network devices. SSH stands for Secure Shell, and is one of the ways to get a command line (shell) access on a remote machine. It was designed to be a secure alternative to previous access […]
Getting Started with Node.js and Jasmine
It’s a shame that, almost since its creation, JavaScript had been considered more of a quick hack than an actual programming language. Lacking the tools and the community that other popular languages had, for a long time it was a language that many people enjoyed to hate. Fortunately, with the inception of Node.js, JavaScript got […]