We've been using Semaphore for continuous integration and deployment of the Ruby on Rails based API that we're currently working on and recently we've decided to use it for the frontend app as well.
The frontend app uses Yeoman workflow, so it uses Bower to install its dependencies and Grunt for running tests. We've had some issues with permissions when installing dependencies on Semaphore and finally came up with these build steps:
mkdir /home/runner/tmpsudo chown -R runner:runner /home/runner/tmpsudo chown -R runner:runner /home/runner/.localsudo npm install -g grunt-cli bowerbundle install --without deploymentnpm installbower installgrunt test
The fifth step is of course optional - we're using Bundler to install compass framework, but you can simply skip it if you're not using any Ruby libraries.