An open source build platform designed for Continuous Delivery
JavaScript Gherkin Other
Clone or download
Permalink
Failed to load latest commit information.
.github fix: simplify issue template Sep 21, 2017
bin fix: split encryptionPassword (#1168) Jul 5, 2018
config feat(1155): Able to customize session timeout (#1201) Jul 19, 2018
design doc(1082): Update branch filtering design doc (#1166) Jul 9, 2018
features fix: Refactoring feature test (#1175) Jul 10, 2018
hooks Attempting to build docker using tags instead of source code. Sep 14, 2016
lib fix(1030): Add API to generate JWT for build using temporal JWT (#1087) Jun 5, 2018
plugins fix: check permission for templates (#1209) Jul 20, 2018
test fix: check permission for templates (#1209) Jul 20, 2018
.dockerignore Read from the new log service (store.sd) Oct 15, 2016
.editorconfig Add settings for ecosystem Sep 1, 2016
.eslintignore migrate barebone server to api repo May 24, 2016
.eslintrc.yaml migrate barebone server to api repo May 24, 2016
.gitignore fix: do not allow PR to publish templates (#1026) Apr 20, 2018
.npmignore fix: Preventing local configs from being added to NPM Jan 30, 2017
CHANGELOG.md Add event/:id/builds endpoint Nov 9, 2016
CONTRIBUTING.md fix(966): Remove auth for GET banners endpoints (#1066) May 17, 2018
Dockerfile updating dependency to npm executor module Mar 23, 2018
Dockerfile.local fix:use node:8 in docker image Feb 20, 2018
LICENSE initial bootstrap of api module May 23, 2016
README.md feat(966): Add banners support (#1057) May 15, 2018
index.js Making changes to match the latest eslint requirements Oct 12, 2016
package.json fix: Update scm-github. (#1205) Jul 20, 2018
screwdriver.yaml fix: add remote trigger for artifact bookend (#1052) May 8, 2018

README.md

Screwdriver API

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

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.

To start using Screwdriver

For more information about Screwdriver, check out our documentation.

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.

Prerequisites

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 -L https://git.io/screwdriver-box)

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: dev-null@screwdriver.cd

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 10 (ten) resources:

One (1) option for datastores:

  • Postgres, MySQL, and Sqlite (sequelize)

Three (3) options for executor:

  • Kubernetes (k8s)
  • Docker (docker)
  • Nomad (nomad)

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
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

License

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