Semaphore Blog

News and updates from your friendly continuous integration and deployment service.

Platform Update on March 22nd

Get future posts like this one in your inbox.

Follow us on

The upcoming platform update is scheduled for March 22nd, 2016.

Git gets an update with version 2.7.3.

Java gets an update with version 8u74.

Node.js receives several updates with versions 5.4.1, 4.3.2, 4.2.6, 0.12.12, and 0.10.43.

PHP is updated with versions 7.0.4, 5.6.19, and 5.5.33.

PIP gets an update with version 8.1.0.

RethinkDB receives an update with version 2.2.5.

Sbt is updated to version 0.13.11.

Scala gets an update with version 2.11.8.

Virtualenv is updated to version 14.0.6.

New things

Go 1.6 is now part of the platform, featuring support for HTTP/2.

Mozilla Firefox 45.0esr has been added to the platform.

Node.js support is expanded with two new versions: 5.8.0 and 4.4.0. To use these versions during the release candidate period, add nvm use <version> to your build commands. After the release candidate period, these versions will be selectable in the UI as well.

Deprecations

Python 3.2 support has been dropped from the platform.

Trying the new platform

To ensure that the updates are compatible with your current setup, please switch to the Ubuntu 14.04 LTS v1603 (release candidate) platform in Project Settings > Platform. We’re looking forward to hearing your feedback and requirements, which will help us to fix the potential issues and tailor the platform to better suit your needs. The release candidate period will last until March 22nd, 2016.

Changes in the final release

The addition of Node.js 4.4.0 and 5.8.0 has been postponed. These versions will be available soon.

A full list of changes is available in the platform changelog.

Continuous Integration with Bitbucket Has Just Got Better

Following the changes in the latest iteration of the Bitbucket API, we have improved how Semaphore interacts with your Bitbucket repositories to make your continuous integration and deployment workflow better.

Bitbucket Build Status

Semaphore now sends commit status feedback directly to the Bitbucket UI, so you know when it’s safe to merge the changes you’ve made. Thanks to the new Bitbucket build status API functionality, you don’t have to jump between Semaphore and Bitbucket to check your latest build status. You get real-time status updates right on your pull request page.

Automatically Deleting Your Branches

From now on, closing a pull request on Bitbucket will automatically delete the corresponding branch on Semaphore. Until now, you had to delete your branch manually after closing a pull request. Your branch will also be automatically deleted on Semaphore if you delete remote branches from your command line.

More Feedback In Semaphore’s Project Setup UI

Besides acting on Bitbucket’s new features, we have also updated the user experience of adding a new project on Semaphore. Previously, you couldn’t differentiate repositories with admin level access. Now Semaphore lists all your repositories grouped by teams and provides you with information on why some of them might be unavailable.

Heroku Add-on Support for Bitbucket

If you are using Semaphore through the Heroku add-on, you can now connect Bitbucket projects, in addition to GitHub. The projects you add will be automatically configured. If you’re used to managing all your tools and services directly from Heroku, this will help you way unify them even further.

Happy building!

Platform Update on February 23rd

The upcoming platform update is scheduled for February 23rd, 2016.

Bundler gets updated to version 1.11.2.

Cassandra is updated to version 2.2.5.

ChromeDriver gets an update with version 2.21 which supports Chrome v46-50.

Elixir receives and update with version 1.2.2.

Git has been updated to version 2.7.1.

Java gets two updates with 7u95 and 8u72.

MySQL receives and update with version 5.6.29.

Node.js gets an important security update with version 0.12.10.

PHP receives three updates with versions 5.6.18 and 5.5.32 and 7.0.3.

RethinkDB gets updated to version 2.2.4.

New things

Node.js 5.6.0 and 4.3.0 are now part of the platform. To use them during the release candidate period, add nvm use 4.3 or nvm use 5.6 to your setup commands in Project Settings.

PhantomJS 2.2.1 has been added to the platform. To use it in your builds, after switching to the release candidate platform, add change-phantomjs-version 2.1.1 to your setup commands.

Trying the new platform

To ensure that the updates are compatible with your current setup, please switch to the Ubuntu 14.04 LTS v1602 (release candidate) platform in Project Settings > Platform. We’re looking forward to hearing your feedback and requirements, which will help us to fix the potential issues and tailor the platform to better suit your needs. The release candidate period will last until February 23rd, 2016.

A full list of changes is available in the platform changelog.

Scheduled downtime

On this Sunday (February 14th, 2016) at 10am UTC, Semaphore will be unavailable due to planned maintenance which includes database migration as well. The downtime is expected to last 4 hours at most. We will be performing important upgrades to our infrastructure, which will enable us to serve you better than before.

Updates will be posted throughout the maintenance on our Twitter account.

Happy building!

New Server Page: A Better Overview of Continuous Deployment

Setting up deployment on Semaphore allows your team to have a uniform and easy to use software delivery pipeline. To that end, Semaphore provides you with a concept of servers. These are essentially configured deploy targets which let you share history of who deployed what and when. Today we’re happy to present you a brand new look that we believe will provide an improved experience.

So far servers on Semaphore reflected the pipeline that they’re part of, which begins with a Git commit, goes through a CI build on Semaphore and finally ends with a deploy, triggered manually or automatically. Looking at that fixed three-step pipeline over time, we’ve realized that it contains a lot of machine-level information that’s pushing out what’s most interesting about it: the actual change your fellow developer shipped. And that’s exactly what we focused on in the new design.

Continuous deployment overview on Semaphore CI

The new activity stream more prominently emphasizes the deploy message and its author. Since most commits that trigger deployment are a result of pull request merges on GitHub, Semaphore is smart to recognize those and display the human-entered message that is originally bellow the automatically generated merge commit summary.

Since a team can use a server page as the one true changelog, Semaphore makes it easy to customize the message of each finished deploy. To do that, just open any individual deploy and click on its title to edit the title and description.

Editing a deploy message on Semaphore CI

In implementing the new design we’ve also made sure that it is responsive and looks great on your phone as well as on your computer.

If you haven’t set up deployment on Semaphore yet, it is very easy to do. Here’s a guide to help you get started:

We’ll be rolling out the new design to all users over the next couple of days. We’re super happy to share it with you and can’t wait to keep iterating on it. Let us know how you like it in the comments or by contacting us on support. Enjoy, and happy building!

New Dashboard: Simpler, Faster, Responsive

The Semaphore dashboard is about to get a brand new look. The new design dramatically simplifies the layout, while improving performance under the hood. Over the next couple of days, we’ll be rolling out this update to all users.

Previously, the dashboard included all projects that you had access to, including the status across all servers and recent branches. Their order would change based on last activity — the ones with new builds or deploys would move to the top. Even though we’ve introduced the option to collapse projects, after you’ve used Semaphore for a while, this behavior often becomes suboptimal. There’s just too much information on the screen, with its order out of your control.

How it works

The new dashboard focuses on two things:

  1. Communicating the status of each project’s main branch, and
  2. Providing an easy way to reach the projects you’re interested in.

Continuous deployment dashboard on Semaphore

Each project forms one uniform row, with an indicator of build status for its default branch. The default branch is either master or the first branch you’ve added to Semaphore. You can change a project’s default branch in “Project Settings > Branches”.

You can open the latest build by clicking on the status icon next to the project name, or you can click anywhere within the row to open the project.

By default, projects are sorted alphabetically. However, you can mark a project as a favorite by clicking on the star on the right-hand side. Favorite projects will always be displayed first, but after you’ve marked a few, you may want to toggle the view to display only your favorite projects. You can do that by clicking on the star button at the top of the project list. Semaphore will remember your preferences the next time you visit the dashboard.

Continuous delivery dashboard on Semaphore, showing only favorites

As a bonus, the new dashboard is fully responsive, making it handy to view on your phone.

We’re very excited to share the new design with you. Let us know how you like it in the comments or by contacting us on support. Enjoy, and happy building!

Platform Update on January 19th

The upcoming platform update is scheduled for January 19th, 2016.

Erlang has been updated to version 18.2.1.

Git has been updated to version 2.7.0.

Heroku toolbelt is now on version 3.42.27.

Node.js gets an update with version 4.2.4.

PHP receives two updates with versions 5.6.17 and 5.5.31.

Redis gets an update with version 3.0.6.

RethinkDB is now on version 2.2.3.

This update also includes optimized Ruby 2.2.x versions, which should yield noticeably improved build times for projects configured to use one of these versions.

New things

Elixir 1.2.0 has been added to the platform. It incldes a wide range of performance improvements, bugfixes and other features. This version can be used during the release candidate period by adding kiex use 1.2.0 to your setup commands in Project Settings.

Node.js 5.4.0 is now also part of the platform. To use it during the release candidate period, add nvm use 5.4 to your setup commands in Project Settings.

Ruby 2.3.0 has been added to the platform. This long awaited Ruby version packs quite a few improvements and additions like the safe navigation operator and the frozen literal pragma. Ruby 2.3.0 can be used during the release candidate period by adding rbenv global 2.3 to your project’s setup commands.

Trying the new platform

To ensure that the updates are compatible with your current setup, please switch to the Ubuntu 14.04 LTS v1601 (release candidate) platform in Project Settings > Platform. We’re looking forward to hearing your feedback and requirements, which will help us to fix the potential issues and tailor the platform to better suit your needs. The release candidate period will last until January 19th, 2016.

Changes in the final release

Go gets an update with version 1.5.3.

A full list of changes is available in the platform changelog.

Fast Continuous Delivery of Microservices with AWS Lambda

AWS Lambda is an AWS service that runs your code in response to events or HTTP requests. Lambda works through functions, which are basically microservices written in Java, Python or Node.js. When you create a Lambda function and deploy your code to it, AWS Lambda takes care of provisioning and managing the backend infrastructure.

Continuous deployment to AWS Lambda with Semaphore

To make it easy to get new versions of your code running on AWS Lambda as quickly as possible, today we’re happy to announce an integration on Semaphore for AWS Lambda users. Here’s a brief screencast that shows how to set up continuous deployment to AWS Lambda in a few easy steps.


Our goal has been to simplify the process as much as possible. With that in mind, Semaphore can detect your functions on AWS Lambda and guide you through the rest of the process with little input required.

You can tell Semaphore to automatically deploy your application from a selected branch whenever all tests pass, or you can choose to do it manually. Your team will have a shared deployment history available at any time and an easy and uniform way to deliver new versions of your microservices.

To help you get started from scratch, we have also published a detailed tutorial on how to build, test and deploy a microservice which sends an SMS message to those who break a build on Semaphore using AWS Lambda:

We hope this integration will help you speed up your continuous delivery workflow.

In case you missed it, we have recently also added deployment integrations for Amazon S3 and AWS Elastic Beanstalk.

Happy building!

Node.js Version Usage in Commercial Projects, 2015 Edition

We’ve been publishing Ruby version reports in commercial projects for three years now, and given recent events in Node community — the merge of io.js with Node.js, appearance of v4.0.0, faster release cycles under a new development policy — we thought it’d be interesting to see what exactly people use to run their production apps today. So here are the stats.

Node.js version usage for commercial projects on Semaphore in 2015

The majority of private projects (73%) are using Node 0.x. Of course, we’re committed to making the latest versions available to all our users through our monthly platform updates.

What’s your team’s approach to keeping up with new Node.js releases? Feel free to discuss in the comments below.

Platform Update on December 22nd

The upcoming platform update is scheduled for December 22nd, 2015.

Cassandra gets and update with version 2.2.4.

Git receives an update with version 2.6.4.

Go gets an update with version 1.5.2.

Heroku toolbelt receives an update with version 3.42.25.

Java gets one update with version 7u91.

Maven is getting updated to version 3.3.9.

MySQL gets an update with version 5.6.28.

Node.js gets three important security updates with 0.10.41, 0.12.9 and 4.2.3. These updates include the latest security fixes for OpenSSL.

PHP receives an update with version 5.6.16.

New things

Two new Node.js versions have been added to the platform: 5.1.1 and 5.2.0. To use these in your builds during the release candidate period, add nvm use <version> as a setup command in Project Settings, where the value for <version> is either 5.1.1 or 5.2.0. On the day of the final release of the new platform, these versions will be selectable in Project Settings too.

PHP 7.0.0 is now part of the platform. Add the following setup command to your project to use it: phpbrew use 7.0. This version will be selectable in Project Settings too, after the release candidate period.

Trying the new platform

To ensure that the updates are compatible with your current setup, please switch to the Ubuntu 14.04 LTS v1512 (release candidate) platform in Project Settings > Platform. We’re looking forward to hearing your feedback and requirements, which will help us to fix the potential issues and tailor the platform to better suit your needs. The release candidate period will last until December 22nd, 2015.

Changes in the final release

Node.js receives another addition with version 5.3.0.

Ruby gets two additions with versions 2.1.8 and 2.2.4.

A full list of changes is available in the platform changelog.

Get future posts like this one in your inbox.

Follow us on