Skip to content

s-yoshika/screwdriver

 
 

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

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

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.

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

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 8 (eight) 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

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
ACCESS_KEY=YOUR-ACCESS-KEY
SD_API=YOUR-LOCAL-API-HOST
TEST_ORG=OUR-TEST-ORGANIZATION
TEST_USERNAME=YOUR-GITHUB-USERNAME
PROTOCOL=PROTOCOL-FOR-SD-API // e.g.PROTOCOL=http; by default it is https

With environment variables

Set the environment variables:

$ export TEST_USERNAME=YOUR-GITHUB-USERNAME
$ export GIT_TOKEN=YOUR-GITHUB-TOKEN
$ export ACCESS_KEY=YOUR-ACCESS-KEY
$ export SD_API=YOUR-LOCAL-API-HOST
$ export TEST_ORG=YOUR-TEST-ORGANIZATION
$ export PROTOCOL=PROTOCAL-FOR-SD-API

Then run the cucumber tests:

npm run functional

License

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

Packages

No packages published

Languages

  • JavaScript 92.1%
  • Gherkin 5.9%
  • Python 2.0%