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.
For more information about Screwdriver, check out our documentation.
Have a look at our guidelines, as well as pointers on where to start making changes, in our contributing guide.
- Node v8.0.0 or higher
- Kubernetes or Docker
$ 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
$ 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
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 2.7
- Mac OSX 10.10+
- Docker for Mac
- Docker Compose 1.8.1+
$ python <(curl -L https://git.io/screwdriver-box)
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.
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: [email protected]
gheHost: github.com
secret: this-is-a-secret
privateRepo: false
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.
This API comes preloaded with 9 (nine) 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
)
npm test
Fork functional-*
repositories to your organization from screwdriver-cd-test
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
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
Code licensed under the BSD 3-Clause license. See LICENSE file for terms.