node package manager

screwdriver-api

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. All data written to a database will be stored in data directory.

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

Fork functional-* repositories to your organization from screwdriver-cd-test

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

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

Then run the cucumber tests:

npm run functional

License

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