Screwdriver is a collection of services that facilitate the workflow for Continuous Delivery pipelines.
Commit new code
User starts a new build by one of the following operations:
- User pushes code to SCM
- User opens a new pull request on SCM
- User pushes code to SCM on an open pull request
- User tells Screwdriver (via API or UI) to rebuild a given commit
Signed webhooks notify Screwdriver’s API about the change.
Trigger execution engine
Screwdriver starts a job on the specified execution engine passing the user’s configuration and git information.
Screwdriver’s Launcher executes the commands specified in the user’s configuration after checking out the source code from git inside the desired container.
Publish artifacts (optional)
User can optionally push produced artifacts to respective artifact repositories (RPMs, Docker images, Node Modules, etc.).
On completion of the job, Screwdriver’s Launcher notifies the API and if there’s more in the pipeline, the API triggers the next job on the execution engine (
Screwdriver consists of five main components, the first three of which are built/maintained by Screwdriver:
RESTful interface for creating, monitoring, and interacting with pipelines.
Human consumable interface for the REST API.
Self-contained tool to clone, setup the environment, and execute the shell commands defined in your job.
Pluggable build executor that supports executing commands inside of a container (e.g. Jenkins, Kubernetes, Nomad, and Docker).
Pluggable storage for keeping information about pipelines (e.g. Postgres, MySQL, and Sqlite).
Reference Architecture in AWS
Screwdriver application components are running in a Kubernetes environment in AWS. Builds are also launched in same Kubernetes environment under a different namespace. Example environment https://cd.screwdriver.cd/