Overall Architecture

Screwdriver is a collection of services that facilitate the workflow for Continuous Delivery pipelines.

Workflow

Workflow

  1. 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
  2. Notify Screwdriver

    Signed webhooks notify Screwdriver’s API about the change.

  3. Trigger execution engine

    Screwdriver starts a job on the specified execution engine passing the user’s configuration and git information.

  4. Build software

    Screwdriver’s Launcher executes the commands specified in the user’s configuration after checking out the source code from git inside the desired container.

  5. Publish artifacts (optional)

    User can optionally push produced artifacts to respective artifact repositories (RPMs, Docker images, Node Modules, etc.).

  6. Continue pipeline

    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 (GOTO:3).

Components

Screwdriver consists of five main components, the first three of which are built/maintained by Screwdriver:

Reference Architecture in AWS

Architecture

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/