One of the goals we had with the [recent platform upgrade][platformupgrade] was to have the infrastructure in place so that we can allow all customers to install additional software and tweak configuration settings by themselves.
Our practice so far has been to enable additional packages or configuration on your request. This has worked well in most cases, and has led us to see which libraries people frequently need, which in turn helped us learn how to enrich and evolve our [build stack][buildstack]. That’s our approach in general: start with something small we’re sure about, then listen and learn to how improve it.
It obviously has the downside of having some back and forth with our customers, which 1) doesn’t scale and 2) doesn’t work if customers are not sure what they need. So today we’re taking a step forward and allowing everyone to have build commands like sudo apt-get install -y awesomeness.
We’re also introducing a small change in the UI: if you’ve arranged your builds commands in “Setup” and “Thread #X”, then you’ll see the passed setup commands initially hidden:
Current customers with a custom setup arranged over our support channel will see it become part of their editable build settings over the next day or two.
You’ll see that installing additional components doesn’t take much time on Semaphore. For instance, setting up a custom Redis server from a PPA takes less than 10 seconds, while packages from the official Ubuntu distribution channels take even less. We’ll be monitoring the custom installation commands in order to continue improving our build stack and provide the best hosted CI experience for our customers.