CICD with Screwdriver
Screwdriver is an open source build platform designed for Continuous Delivery. It's built on top of modern technologies like Kubernetes & Docker.
Centralized CICD platform running over thousands of daily builds, supporting Mobile, Public Cloud, and Hybrid Cloud use cases. Actively partnering with Y! Japan on product roadmap and building new features.
Screwdriver architecture allows you to use pluggable components under the hood to swap out pieces that make sense for your infrastructure. For example, a Screwdriver cluster admin can swap Postgres or Mysql for the Datastore or use Github, Gitlab, Bitbucket, or a combination of the former for the SCM. You can even dynamically select an executor engine based on the needs of each build pipeline. For example, send Golang builds to the Kubernetes executor while your iOS builds run in a Jenkins execution farm.
Pipeline as code
With Screwdriver, you define your delivery workflow in a simple yaml file. Screwdriver supports advanced workflow features such as:
- Branch filtering - Create workflows with branch-specific jobs. Useful when working on feature branches.
- Parallel and Join - Workflow where jobs fan out of a single job and then fan into another job. Enables creating multiple parallel workflows for a pipeline
- Remote Triggers - Build interconnected pipelines. Trigger a workflow for building an application when one of its dependent libraries have been built.
- Blocked By - Prevents builds from running concurrently. Block running a deploy job when a test job is already in progress.
- Detached jobs & pipelines - Defines jobs which are not tied to any SCM changes. These can be manually started at any time and will use meta set in a past event.
Sharing best practices via Templates & Commands
Screwdriver enables expert users to define templates, which define reusable jobs. If you are passionate about golang and want to lead the direction on how golang applications should be built, tested, and deployed, then you can create a template for golang which all users of the Screwdriver cluster can include in their pipeline yaml config.
As an Organization, templates allow you to encapsulate the best behavior on how an application should be built and deployed. Example templates are available to browse in our open source Screwdriver instance. What template is to a job is what shared command is to a step. Templates allow users to share common job configurations, whereas, shared commands allow users to share common build steps. For example, a step to build RPM package or setup Docker in your build environment can be packaged as a shared command. Example commands are available to browse in our open source Screwdriver instance.
Pluggable build steps allow cluster admins to setup a build environment with authorization credentials such as SSHCA. Built-in secret management allows users to store build secrets securely. Screwdriver also provides a VM-based executor to provide further build isolation. Access tokens allow user or pipeline-level scoped programmatic interactions with the Screwdriver API.
Open Source First
The Screwdriver team follows an open source first philosophy by developing features for the open source community and releasing in open source first before making new features available to our internal enterprise users. We also host a public Screwdriver cluster with Guest access, so that users can see and experience firsthand how the platform works.