Igor Šarčević

Posts by: 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 translate from RGB (red, green, blue) to hexadecimal color representation. In addition, we will create…

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 programmaticaly, tweak and bend it to your will, is a huge benefit for both small and large organizations. This is why we have deprecated our old API v1 and introduced a new API v2, and this is why we are now introducing a command line utility. The Semaphore Command Line Interface (CLI), is a tool for creating and managing Semaphore projects from the…

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.

Faster Rails: Eliminating N+1 queries

This article is part of our Faster Rails series. Check out the previous article about index creation on large tables. Rails does not scale well – this argument is often used to downplay the worth of the language and the framework. Yet, many businesses from small startups to platforms with millions of users use it as the backbone of their operations. A good question to ask ourselves is whether Rails…

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 makes lookups and updates much slower. If this is the case, adding missing indexes to…

Faster Rails: Is Your Database Properly Indexed?

This article is part of our Faster Rails series. Check out the previous article about fast existence checks. My Rails app used to be fast and snappy, and everything was working just fine for several months. Then, slowly, as my product grew and users started to flock in, web requests become slow and my database’s CPU usage started hitting the roof. I hadn’t changed anything, why was my app getting…

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 it as the backbone of their operations. How can we explain these contradictions?

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. In this case a rebuild can help to make your build pass. Until now, a rebuild of a failed build replaced that build. This way, both the logs and the exact reason behind the failure becomes inaccessible for further inspection.

Lightweight Docker Images in 5 Steps

Lightweight Docker Images Speed Up Deployment 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 deployment script for your Node.js application using Capistrano, and introduce you to its DSL (domain…

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 methods such as telnet. Unlike some previous techniques, SSH encrypts all the data that you…

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 a chance to shine with an awesome community and the toolset it always deserved. This…

How to Deploy Sinatra Applications with Capistrano

Introduction Rails is great, but often it is not the best tool for creating smaller applications. For smaller size apps, especially those that are mainly focused around pure JSON APIs, Sinatra is often a far better option. Unfortunately, the majority of learning resources in the Ruby ecosystem are focused on Rails, and leave out the details for other frameworks. One of the essential web application development processes is application deployment.…

SSH Access to Your CI Environment

With great pleasure we are announcing the release of a new tool on

Meteor.js: Getting Started

MeteorJS stands out among the recent big Javascript frameworks with its radical view on creating web applications. It seamlessly connects the client side code with a Node + MongoDB based backend and promises unbelievably fast application development.

Deploy from your chat room

Remember how excited you were when Jesse Newland from GitHub presented ChatOps at GitHub? Great news! From now on you can set up your own Hubot to perform deployments on Semaphore.

1 2