- Getting Started
- Example deployment to Heroku
- Using pipelines
- Deploying with Snap
- How do I add SSH keys to my build?
- Scheduling and skipping builds
- Deleting or cancelling a build run
- Billing owner best practices
- Deployment Pipeline
- The CI Environment
- Snap CI's Stacks
- Simple Docker pipeline using Snap CI
- Building & propagating Docker images
- Deploying Docker images
- Docker FAQ
- Known Limitations
- Relational Databases
- NoSQL Datastores
- Testing with browsers
- Complete Package List
- Environment Variables
- Heroku Deployments
- Deploying to AWS
- Deploying to AWS OpsWorks
- Deploying to AWS S3
- Deploying to AWS ElasticBeanstalk
- Working with Branches
- Cloning a pipeline
- Integration pipelines
- Automatic branch tracking
- Pull Requests
- Configuring multiple workers
- Speeding up builds
- Setting up test parallelism
- Pipeline Parallelism
- Polling project status using CCTray
- Webhook notifications
- How Snap integrates with GitHub
- Revoking privileges granted to Snap CI
- Managing membership
- Triggering Pipelines and Stages
- Migration to GoCD
- Migration to other CI and CD tools
My build can't find the dependencies from the previous stages.
Every stage in Snap starts with a clean and isolated environment. Hence, if you made any changes to the build machine such as installing packages or build dependencies in the previous stages they may not be available in the current stage as it may be running on a different machine. If you wish to persist the state across stages it is recommended to use Setup commands or Artifacts.
My Protractor tests using Chromedriver are not working.
Some projects may attempt to download a brand new chromedriver to install inside your project. This normally happens if you depend on the chromedriver rubygem or npm package. Please, read "using chromedriver" for more details.
Some tips to configure run your Protractor tests:
- Do not use xvfb-run.
- Configure protractor to use our chromedriver. To set it, just change the configuration chromeDriver to /usr/local/bin/chromedriver.
- Currently Protractor can't start selenium server inside our containers. To avoid this error you can set chromeOnly to true, then Protractor will use chromedriver directly.
I need my ssh keys on Snap.
In need of storing sensitive files in your build? Follow our guide for more details.
Bundle install fails for a private repository
A gem dependency for a private repository requires you to setup a ssh key with access to that repository. Follow our guide for more details.
My build is timing out
A build times out if it has been running the same stage for more than 2 hours or has not produced any console output for more than 15 minutes.
One of the most common reason a build times out is because the command being run is waiting for input from the keyboard. One of the ways to make sure this doesn't happen is to close the stdin of the command in doubt by appending
0<&- to it. For e.g.
ssh email@example.com some-shell-script could be written as
ssh firstname.lastname@example.org some-shell-script 0<&-.
If any build step is known to take more than 15 minutes, and if your build is timing out, we suggest prefixing that build step with
snap-wait TIMEOUT_IN_MINUTES. For e.g.
./some-long-running-command --with some arguments could be written as
snap-wait 30 ./some-long-running-command --with some arguments. This will ensure that your build is not terminated for atleast 30 minutes for not generating any console output.
The snap-wait command allows the amount of time specified, it does not require the command to wait the full amount of time. So if for example, you add
snap-wait 45 to your command but the command only takes 15 seconds to complete, Snap will exit the command after 15 seconds and not wait the entire 45 seconds.
The snap-wait command applies to the entire script. If multiple snap-wait commands are included in your build, the largest value will be used.
If you need any help in debugging this please get in touch with us.