screwdriver-cd/screwdriver
screwdriver-cd/screwdriver has 1,050 GitHub stars and 175 forks. Star changes are not measured yet. Last checked 2026-11-09 11:33 UTC. Last push 2026-10-25.
An open source build platform designed for continuous delivery.
Measured star growth
- in 24h
- Update delayed
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalScrewdriver API
API for the Screwdriver CD service
Screwdriver is a self-contained, pluggable service to help you build, test, and continuously deliver software using the latest containerization technologies.
Table of Contents
Background
Screwdriver began as a hack for simplified interfacing with Jenkins at Yahoo in 2012. As the volume of builds increased, it became clear that Jenkins was not stable or feasible to use at the scale we were running builds. In 2016, we rebuilt Screwdriver from scratch in open source with our best coding practices and CICD goals in mind. Screwdriver is executor and SCM-agnostic, meaning you can choose whichever plugin better suits your need or build your own. It's completely free and open source, and our team is actively maintaining the code.
For more information about Screwdriver, check out our homepage.
Installation and Usage
Plugins
This API comes preloaded with 18 (eighteen) resources:
- auth
- banners
- builds
- buildClusters
- collections
- commands
- coverage - optional
- events
- jobs
- pipelines
- secrets
- stages
- stageBuilds
- templates
- tokens
- webhooks
- stats
- isAdmin
Three (3) option for datastores:
- Postgres, MySQL, and Sqlite (
sequelize)
Three (3) options for executor:
- Kubernetes (
k8s) - Docker (
docker) - Nomad (
nomad)
Three (3) options for SCM:
- GitHub (
github) - GitLab (
gitlab) - Bitbucket (
bitbucket)
Prerequisites
To use Screwdriver, you will need the following prerequisites:
- Node v12.0.0 or higher
- Kubernetes or Docker
From Source
$ git clone [email protected]:screwdriver-cd/screwdriver.git ./
$ npm install
$ vim ./config/local.yaml # See below for configuration
$ npm start
info: Server running at http://localhost:8080
From a Prebuilt Docker image
$ vim ./local.yaml # See below for configuration
$ docker run --rm -it --volume=`pwd`/local.yaml:/config/local.yaml -p 8080 screwdrivercd/screwdriver:stable
info: Server running at http://localhost:8080
Using In-A-Box
Our in-a-box script brings up an entire Screwdriver instance (ui, api, and log store) locally for you to play with. Follow instructions at https://github.com/screwdriver-cd/in-a-box#screwdriver-in-a-box.
Using Helm
This chart bootstraps the whole Screwdriver ecosystem and also nginx ingress controller.
Configuration
Screwdriver already defaults most configuration, but you can override defaults using a local.yaml or environment variables.
To continue set up, follow the instructions for cluster management.
Yaml
Example overriding local.yaml:
executor:
plugin: k8s
k8s:
options:
kubernetes:
host: kubernetes.default
token: this-is-a-real-token
launchVersion: stable
scms:
github:
plugin: github
config:
oauthClientId: totally-real-client-id
oauthClientSecret: another-real-client-secret
secret: a-really-real-secret
username: sd-buildbot
email: [email protected]
Environment
Example overriding with environment variables:
$ export K8S_HOST=127.0.0.1
$ export K8S_TOKEN=this-is-a-real-token
$ export SECRET_OAUTH_CLIENT_ID=totally-real-client-id
$ export SECRET_OAUTH_CLIENT_SECRET=another-real-client-secret
All the possible environment variables are defined here.
Testing
Unit Tests
npm test
Note: You might run into memory issues running all the unit tests. You can update your ~/.bashrc file with the line below to ensure there's enough memory for tests to run:
export NODE_OPTIONS=--max_old_space_size=4096
Functional tests
Fork functional-* repositories to your organization from screwdriver-cd-test
With .func_config
Add .func_config to the root of the Screwdriver API folder with your username, github token, access key, host, and organization for test:
GIT_TOKEN=YOUR-GITHUB-TOKEN
SD_API_TOKEN=YOUR-SD-API-TOKEN
SD_API_HOST=YOUR-SD-API-HOST
SD_API_PROTOCOL=PROTOCOL-FOR-SD-API // e.g.PROTOCOL=http; by default it is https
TEST_ORG=YOUR-TEST-ORGANIZATION
TEST_USERNAME=YOUR-GITHUB-USERNAME
TEST_SCM_HOSTNAME=YOUR-TEST-SCM-HOSTNAME // e.g. TEST_SCM_HOSTNAME=mygithub.com; by default it is github.com
TEST_SCM_CONTEXT=YOUR-TEST-SCM-CONTEXT // e.g.TEST_SCM_CONTEXT=bitbucket; by default it is github
With environment variables
Set the environment variables:
$ export GIT_TOKEN=YOUR-GITHUB-TOKEN
$ export SD_API_TOKEN=YOUR-SD-API-TOKEN
$ export SD_API_HOST=YOUR-SD-API-HOST
$ export SD_API_PROTOCOL=PROTOCOL-FOR-SD-API
$ export TEST_ORG=YOUR-TEST-ORGANIZATION
$ export TEST_USERNAME=YOUR-GITHUB-USERNAME
$ export TEST_SCM_HOSTNAME=YOUR-TEST-SCM-HOSTNAME
$ export TEST_SCM_CONTEXT=YOUR-TEST-SCM-CONTEXT
Then run the cucumber tests:
npm run functional
Contribute
To start contributing to Screwdriver, have a look at our guidelines, as well as pointers on where to start making changes, in our contributing guide.
License
Code licensed under the BSD 3-Clause license. See LICENSE file for terms.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,611 starspublic-apis/public-apis
A collective list of free APIs
497,932 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
449,912 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,301 stars