Screwdriver is an open source build platform written in JavaScript designed for continuous delivery and continuous integration. The project originated as a hack for simplified Jenkins interfacing at Yahoo in 2012, but was rebuilt from scratch in 2016 as an open source project when Jenkins proved unstable at scale. The platform is executor and SCM-agnostic, allowing users to choose plugins that suit their needs or build custom ones.
The platform supports three datastore options through Sequelize: Postgres, MySQL, and SQLite. For execution environments, users can choose between Kubernetes, Docker, or Nomad. Source control management integrations are available for GitHub, GitLab, and Bitbucket, providing flexibility in how teams manage their code repositories.
Installation options range from building from source to using prebuilt Docker images. The project provides an in-a-box script that brings up an entire Screwdriver instance locally including the UI, API, and log store. For production deployments, a Helm chart is available that bootstraps the complete Screwdriver ecosystem along with an nginx ingress controller. The platform requires Node v12.0.0 or higher and either Kubernetes or Docker as prerequisites.
Configuration is handled through a combination of default settings defined in config files, with the ability to override defaults using local.yaml files or environment variables. The project includes comprehensive testing infrastructure with unit tests and functional tests, though developers may encounter memory issues when running the full test suite and can adjust their environment accordingly. Functional testing leverages repositories forked from the screwdriver-cd-test organization.
The codebase is licensed under the BSD 3-Clause license and maintains CII Best Practices certification.