Public | Automated Build

Last pushed: a day ago
Short Description
API server for Screwdriver - a Continuous Delivery service
Full Description

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

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

scms:
    - plugin: github
      config:
          displayName: github
          oauthClientId: totally-real-client-id
          oauthClientSecret: another-real-client-secret
          username: sd-buildbot
          email: dev-null@screwdriver.cd
          gheHost: github.com
          secret: this-is-a-secret
          privateRepo: false

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 9 (nine) 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
API_TOKEN=YOUR-API-TOKEN
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 API_TOKEN=YOUR-API-TOKEN
$ 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.

Docker Pull Command
Owner
screwdrivercd
Source Repository

Comments (1)
dolbager
8 months ago

npm info it worked if it ends with ok
npm info using npm@3.10.10
npm info using node@v6.9.3
npm info lifecycle screwdriver-api@3.4.69~prestart: screwdriver-api@3.4.69
npm info lifecycle screwdriver-api@3.4.69~start: screwdriver-api@3.4.69

screwdriver-api@3.4.69 start /usr/src/app/node_modules/screwdriver-api
./bin/server

fs.js:640
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^

Error: ENOENT: no such file or directory, open '/var/run/secrets/kubernetes.io/serviceaccount/token'
at Error (native)
at Object.fs.openSync (fs.js:640:18)
at Object.fs.readFileSync (fs.js:508:33)
at new K8sExecutor (/usr/src/app/node_modules/screwdriver-executor-k8s/index.js:34:16)
at Object.<anonymous> (/usr/src/app/node_modules/screwdriver-api/bin/server:32:18)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3

npm info lifecycle screwdriver-api@3.4.69~start: Failed to exec start script
npm ERR! Linux 4.4.41-moby
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start"
npm ERR! node v6.9.3
npm ERR! npm v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! screwdriver-api@3.4.69 start: ./bin/server
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the screwdriver-api@3.4.69 start script './bin/server'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the screwdriver-api package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! ./bin/server
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs screwdriver-api
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls screwdriver-api
npm ERR! There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?

npm ERR! Please include the following file with any support request:
npm ERR! /usr/src/app/node_modules/screwdriver-api/npm-debug.log