The build sequence on Semaphore consists of the following steps.
When the GitHub webhook hits Semaphore, your repository is initialized to the specified revision.
Your repository along with its dependencies will, in most cases, be retrieved from cache. For more information, please see this page.
Your code will be placed in /home/runner/:project_name.
Xvfb (X Virtual Framebuffer) is launched for running tests that require GUI, such as those backed by Selenium.
For a full list of available variables, please see this page.
Semaphore caches directories for Ruby and Node.js projects by default, but we also provide .semaphore-cache directory which you can use custom caching. For more information on this topic, please read about caching between builds.
Any custom configuration files you've added are written to disk.
These are the commands specified in your project's build settings. The current directory is set to /home/runner/:project_name.
For language related questions please consult one of our dedicated guides.
After all build commands for a specific job are completed, Semaphore exports SEMAPHORE_THREAD_RESULT which can be used in after job commands.
After job commands are executed after build commands on each job, regardless of whether the build commands passed or failed.
Project's git history and any vendor dependencies are cached for later reuse.
Semaphore Docs are open source — Edit on GitHub