{"id":13562623,"url":"https://github.com/screwdriver-cd/screwdriver","last_synced_at":"2025-05-15T07:06:39.159Z","repository":{"id":38863251,"uuid":"59517730","full_name":"screwdriver-cd/screwdriver","owner":"screwdriver-cd","description":"An open source build platform designed for continuous delivery.","archived":false,"fork":false,"pushed_at":"2025-05-12T20:27:11.000Z","size":5767,"stargazers_count":1026,"open_issues_count":552,"forks_count":169,"subscribers_count":66,"default_branch":"master","last_synced_at":"2025-05-12T20:39:17.276Z","etag":null,"topics":["api","ci-cd","continuous-delivery","continuous-integration","javascript","kubernetes","screwdriver"],"latest_commit_sha":null,"homepage":"http://screwdriver.cd","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/screwdriver-cd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-05-23T20:55:35.000Z","updated_at":"2025-05-12T20:04:41.000Z","dependencies_parsed_at":"2023-10-04T13:20:03.370Z","dependency_job_id":"f647bec6-a0c6-4234-a824-d72ea38bfc15","html_url":"https://github.com/screwdriver-cd/screwdriver","commit_stats":{"total_commits":1329,"total_committers":101,"mean_commits":"13.158415841584159","dds":0.8540255831452219,"last_synced_commit":"70df2d0c7094d4aa14ccc76713c9ca95b2a21357"},"previous_names":[],"tags_count":2124,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/screwdriver-cd%2Fscrewdriver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/screwdriver-cd%2Fscrewdriver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/screwdriver-cd%2Fscrewdriver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/screwdriver-cd%2Fscrewdriver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/screwdriver-cd","download_url":"https://codeload.github.com/screwdriver-cd/screwdriver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254051558,"owners_count":22006501,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","ci-cd","continuous-delivery","continuous-integration","javascript","kubernetes","screwdriver"],"created_at":"2024-08-01T13:01:10.483Z","updated_at":"2025-05-15T07:06:34.148Z","avatar_url":"https://github.com/screwdriver-cd.png","language":"JavaScript","readme":"# Screwdriver API\n[![Version][npm-image]][npm-url] [![Pulls][docker-pulls]][docker-url] [![Stars][docker-stars]][docker-url] [![Build Status][status-image]][status-url] [![Open Issues][issues-image]][issues-url] [![Coverage][cov-image]][cov-url] [![Vulnerabilities][vul-image]][vul-url] ![License][license-image] [![Slack][slack-image]][slack-url] [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/4689/badge)](https://bestpractices.coreinfrastructure.org/projects/4689)\n\n\u003e API for the Screwdriver CD service\n\n[Screwdriver](http://screwdriver.cd) is a self-contained, pluggable service to help you build, test, and continuously deliver software using the latest containerization technologies.\n\n## Table of Contents\n\n- [Background](#background)\n- [Installation and Usage](#installation-and-usage)\n- [Configuration](#configuration)\n- [Testing](#testing)\n- [Contribute](#contribute)\n- [License](#license)\n\n## Background\n\nScrewdriver began as a hack for simplified interfacing with Jenkins at Yahoo in 2012. As the volume of builds increased, it became clear that Jenkins was not stable or feasible to use at the scale we were running builds. In 2016, we rebuilt Screwdriver from scratch in open source with our best coding practices and CICD goals in mind. Screwdriver is executor and SCM-agnostic, meaning you can choose whichever plugin better suits your need or build your own. It's completely free and open source, and our team is actively maintaining the code.\n\nFor more information about Screwdriver, check out our [homepage](http://screwdriver.cd).\n\n## Installation and Usage\n\n### Plugins\n\nThis API comes preloaded with 18 (eighteen) resources:\n\n - [auth](plugins/auth/README.md)\n - [banners](plugins/banners/README.md)\n - [builds](plugins/builds/README.md)\n - [buildClusters](plugins/buildClusters/README.md)\n - [collections](plugins/collections/README.md)\n - [commands](plugins/commands/README.md)\n - [coverage](plugins/coverage/README.md) - optional\n - [events](plugins/events/README.md)\n - [jobs](plugins/jobs/README.md)\n - [pipelines](plugins/pipelines/README.md)\n - [secrets](plugins/secrets/README.md)\n - [stages](plugins/stages/README.md)\n - [stageBuilds](plugins/stageBuilds/README.md)\n - [templates](plugins/templates/README.md)\n - [tokens](plugins/tokens/README.md)\n - [webhooks](plugins/webhooks/README.md)\n - [stats](plugins/stats.js)\n - [isAdmin](plugins/isAdmin.js)\n\nThree (3) option for datastores:\n - Postgres, MySQL, and Sqlite (`sequelize`)\n\nThree (3) options for executor:\n - Kubernetes (`k8s`)\n - Docker (`docker`)\n - Nomad (`nomad`)\n\nThree (3) options for SCM:\n - GitHub (`github`)\n - GitLab (`gitlab`)\n - Bitbucket (`bitbucket`)\n\n### Prerequisites\nTo use Screwdriver, you will need the following prerequisites:\n\n- Node v12.0.0 or higher\n- [Kubernetes][kubectl] or [Docker][docker]\n\n### From Source\n\n```bash\n$ git clone git@github.com:screwdriver-cd/screwdriver.git ./\n$ npm install\n$ vim ./config/local.yaml # See below for configuration\n$ npm start\ninfo: Server running at http://localhost:8080\n```\n\n### From a Prebuilt Docker image\n\n```bash\n$ vim ./local.yaml # See below for configuration\n$ docker run --rm -it --volume=`pwd`/local.yaml:/config/local.yaml -p 8080 screwdrivercd/screwdriver:stable\ninfo: Server running at http://localhost:8080\n```\n\n### Using In-A-Box\n\nOur in-a-box script brings up an entire Screwdriver instance (ui, api, and log store) locally for you to play with.\nFollow instructions at https://github.com/screwdriver-cd/in-a-box#screwdriver-in-a-box.\n\n### Using Helm\n\n[This chart](https://github.com/screwdriver-cd/screwdriver-chart) bootstraps the whole Screwdriver ecosystem and also nginx ingress controller.\n\n## Configuration\n\nScrewdriver already [defaults most configuration](config/default.yaml), but you can override defaults using a `local.yaml` or environment variables.\n\nTo continue set up, follow the [instructions for cluster management](https://github.com/screwdriver-cd/guide/blob/master/docs/cluster-management/configure-api.md#managing-the-api).\n\n### Yaml\n\nExample overriding `local.yaml`:\n\n```yaml\nexecutor:\n    plugin: k8s\n    k8s:\n        options:\n            kubernetes:\n                host: kubernetes.default\n                token: this-is-a-real-token\n            launchVersion: stable\n\nscms:\n    github:\n        plugin: github\n        config:\n            oauthClientId: totally-real-client-id\n            oauthClientSecret: another-real-client-secret\n            secret: a-really-real-secret\n            username: sd-buildbot\n            email: dev-null@screwdriver.cd\n```\n\n### Environment\n\nExample overriding with environment variables:\n\n```bash\n$ export K8S_HOST=127.0.0.1\n$ export K8S_TOKEN=this-is-a-real-token\n$ export SECRET_OAUTH_CLIENT_ID=totally-real-client-id\n$ export SECRET_OAUTH_CLIENT_SECRET=another-real-client-secret\n```\n\nAll the possible environment variables are [defined here](config/custom-environment-variables.yaml).\n\n## Testing\n\n### Unit Tests\n\n```bash\nnpm test\n```\n\n_Note: You might run into [memory issues running all the unit tests](https://stackoverflow.com/questions/26094420/fatal-error-call-and-retry-last-allocation-failed-process-out-of-memory/48895989#48895989). You can update your `~/.bashrc` file with the line below to ensure there's enough memory for tests to run:_\n\n```bash\nexport NODE_OPTIONS=--max_old_space_size=4096\n```\n\n### Functional tests\n\nFork `functional-*` repositories to your organization from [screwdriver-cd-test](https://github.com/screwdriver-cd-test)\n\n#### With `.func_config`\n\nAdd `.func_config` to the root of the Screwdriver API folder with your username, github token, access key, host, and organization for test:\n```\nGIT_TOKEN=YOUR-GITHUB-TOKEN\nSD_API_TOKEN=YOUR-SD-API-TOKEN\nSD_API_HOST=YOUR-SD-API-HOST\nSD_API_PROTOCOL=PROTOCOL-FOR-SD-API // e.g.PROTOCOL=http; by default it is https\nTEST_ORG=YOUR-TEST-ORGANIZATION\nTEST_USERNAME=YOUR-GITHUB-USERNAME\nTEST_SCM_HOSTNAME=YOUR-TEST-SCM-HOSTNAME // e.g. TEST_SCM_HOSTNAME=mygithub.com; by default it is github.com\nTEST_SCM_CONTEXT=YOUR-TEST-SCM-CONTEXT // e.g.TEST_SCM_CONTEXT=bitbucket; by default it is github\n```\n\n#### With environment variables\n\nSet the environment variables:\n\n```bash\n$ export GIT_TOKEN=YOUR-GITHUB-TOKEN\n$ export SD_API_TOKEN=YOUR-SD-API-TOKEN\n$ export SD_API_HOST=YOUR-SD-API-HOST\n$ export SD_API_PROTOCOL=PROTOCOL-FOR-SD-API\n$ export TEST_ORG=YOUR-TEST-ORGANIZATION\n$ export TEST_USERNAME=YOUR-GITHUB-USERNAME\n$ export TEST_SCM_HOSTNAME=YOUR-TEST-SCM-HOSTNAME\n$ export TEST_SCM_CONTEXT=YOUR-TEST-SCM-CONTEXT\n```\n\nThen run the cucumber tests:\n```bash\nnpm run functional\n```\n\n## Contribute\nTo start contributing to Screwdriver, have a look at our guidelines, as well as pointers on where to start making changes, in our [contributing guide](http://docs.screwdriver.cd/about/contributing).\n\n## License\n\nCode licensed under the BSD 3-Clause license. See [LICENSE file](https://github.com/screwdriver-cd/screwdriver/blob/master/LICENSE) for terms.\n\n[npm-image]: https://img.shields.io/npm/v/screwdriver-api.svg\n[npm-url]: https://npmjs.org/package/screwdriver-api\n[cov-image]: https://coveralls.io/repos/github/screwdriver-cd/screwdriver/badge.svg?branch=master\n[cov-url]: https://coveralls.io/github/screwdriver-cd/screwdriver?branch=master\n[vul-image]: https://snyk.io/test/github/screwdriver-cd/screwdriver.git/badge.svg\n[vul-url]: https://snyk.io/test/github/screwdriver-cd/screwdriver.git\n[docker-pulls]: https://img.shields.io/docker/pulls/screwdrivercd/screwdriver.svg\n[docker-stars]: https://img.shields.io/docker/stars/screwdrivercd/screwdriver.svg\n[docker-url]: https://hub.docker.com/r/screwdrivercd/screwdriver/\n[license-image]: https://img.shields.io/npm/l/screwdriver-api.svg\n[issues-image]: https://img.shields.io/github/issues/screwdriver-cd/screwdriver.svg\n[issues-url]: https://github.com/screwdriver-cd/screwdriver/issues\n[status-image]: https://cd.screwdriver.cd/pipelines/1/badge\n[status-url]: https://cd.screwdriver.cd/pipelines/1\n[slack-image]: http://slack.screwdriver.cd/badge.svg\n[slack-url]: http://slack.screwdriver.cd/\n[docker-compose]: https://www.docker.com/products/docker-compose\n[nomad]: https://www.hashicorp.com/products/nomad\n[docker]: https://www.docker.com/products/docker\n[kubectl]: https://kubernetes.io/docs/user-guide/kubectl-overview/\n","funding_links":[],"categories":["JavaScript","Continuous Delivery \u0026 GitOps","api"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrewdriver-cd%2Fscrewdriver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscrewdriver-cd%2Fscrewdriver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscrewdriver-cd%2Fscrewdriver/lists"}