Skip to content

screwdriver-cd/screwdriver

Folders and files

NameName
Last commit message
Last commit date
Mar 3, 2017
Mar 8, 2017
Mar 3, 2017
Sep 14, 2016
Mar 3, 2017
Mar 3, 2017
Mar 3, 2017
Oct 15, 2016
Sep 1, 2016
May 24, 2016
May 24, 2016
Oct 19, 2016
Dec 22, 2016
Jan 30, 2017
Nov 9, 2016
Dec 1, 2016
Jan 27, 2017
Oct 15, 2016
May 23, 2016
Jan 23, 2017
Feb 17, 2017
Oct 12, 2016
Mar 3, 2017
Oct 21, 2016

Repository files navigation

Screwdriver API

Version Pulls Stars Build Status Open Issues Dependency Status Coverage Vulnerabilities License Slack

API for the Screwdriver CD service

Usage

Prerequisites

  • Node v6.0.0 or higher

From Source

$ git clone git@github.com:screwdriver-cd/screwdriver.git ./
$ npm install
$ vim ./config/local.yaml # See below for configuration
$ npm start
info: Server running at http://localhost:8080

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

In-A-Box

This handy feature will bring up an entire Screwdriver instance (ui, api, and log store) locally for you to play with.

Requires:

$ python <(curl https://raw.githubusercontent.com/screwdriver-cd/screwdriver/master/in-a-box.py)

Configuration

Screwdriver already defaults most configuration, but you can override defaults using a local.yaml or environment variables.

Yaml

Example overriding local.yaml:

executor:
    plugin: k8s
    k8s:
        host: 127.0.0.1
        token: this-is-a-real-token

login:
    oauthClientId: totally-real-client-id
    oauthClientSecret: another-real-client-secret

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.

Plugins

This API comes preloaded with 7 (seven) resources:

One (1) option for datastores:

  • Postgres, MySQL, and Sqlite (sequelize)

Two (2) options for executor:

  • Kubernetes (k8s)
  • Docker (docker)

Two (2) options for SCM:

  • Github (github)
  • Bitbucket (bitbucket)

Testing

Unit Tests

npm test

Functional tests

Update .func_config.json with your own username, github token, access key, and host:

{
    "username": "YOUR-GITHUB-USERNAME",
    "gitToken": "YOUR-ACCESS-TOKEN",
    "accessKey": "YOUR-ACCESS-KEY",
    "host": "YOUR-LOCAL-API-HOST"
}

Then run the cucumber tests:

npm run functional

License

Code licensed under the BSD 3-Clause license. See LICENSE file for terms.