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/tmp
sudo chown -R runner:runner /home/runner/tmp
sudo chown -R runner:runner /home/runner/.local
sudo npm install -g grunt-cli bower
bundle install --without deployment
npm install
bower install
grunt 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.