{"id":18778,"library":"screwdriver-api","title":"Screwdriver API","description":"The Screwdriver API is the core server for the Screwdriver.cd continuous delivery service, currently at version 8.0.143. It provides 18 preloaded plugins for managing builds, pipelines, secrets, webhooks, and more, with support for multiple datastores (Postgres, MySQL, Sqlite), executors (Kubernetes, Docker, Nomad), and SCM providers (GitHub, GitLab, Bitbucket). Released weekly, it is actively maintained by Yahoo and the open-source community. Compared to Jenkins or GitLab CI, Screwdriver emphasizes container-native, pluggable architecture and SCM-agnosticism. Requires Node.js >=22.0.0.","status":"active","version":"8.0.143","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/screwdriver-cd/screwdriver","tags":["javascript","screwdriver","yahoo","continuous delivery","continuous integration"],"install":[{"cmd":"npm install screwdriver-api","lang":"bash","label":"npm"},{"cmd":"yarn add screwdriver-api","lang":"bash","label":"yarn"},{"cmd":"pnpm add screwdriver-api","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core models for builds, jobs, pipelines, etc.","package":"screwdriver-models","optional":false},{"reason":"Default datastore implementation using Sequelize (Postgres, MySQL, Sqlite).","package":"screwdriver-datastore-sequelize","optional":true},{"reason":"Kubernetes executor plugin for running builds.","package":"screwdriver-executor-k8s","optional":true}],"imports":[{"note":"ESM-only since v6.0.0; no default export.","wrong":"const server = require('screwdriver-api')","symbol":"server","correct":"import { server } from 'screwdriver-api'"},{"note":"Preferred way to start the API server programmatically.","wrong":"","symbol":"setupServer","correct":"import { setupServer } from 'screwdriver-api'"},{"note":"Named export for validation schemas.","wrong":"import Schema from 'screwdriver-api'","symbol":"Schema","correct":"import { Schema } from 'screwdriver-api'"}],"quickstart":{"code":"import { setupServer, server } from 'screwdriver-api';\n\nconst port = parseInt(process.env.PORT ?? '8080', 10);\nconst config = {\n  port,\n  datastore: {\n    plugin: 'sequelize',\n    sequelize: { dialect: 'sqlite', storage: './data.sqlite' }\n  },\n  executor: { plugin: 'docker' },\n  scm: { plugin: 'github', github: { oauthClientId: process.env.GH_CLIENT_ID ?? '', oauthClientSecret: process.env.GH_CLIENT_SECRET ?? '' } },\n  auth: { jwtSecret: process.env.JWT_SECRET ?? 'a-really-long-secret-change-me' }\n};\n\nconst app = await setupServer(config);\napp.listen(port, () => {\n  console.log(`Screwdriver API running on http://localhost:${port}`);\n});","lang":"typescript","description":"Initialize and start Screwdriver API server with Docker executor, SQLite datastore, and GitHub SCM."},"warnings":[{"fix":"Use import syntax and ensure project is configured for ES modules.","message":"ESM-only since v6.0.0: CommonJS require() will not work.","severity":"breaking","affected_versions":">=6.0.0"},{"fix":"Upgrade Node.js to >=22.0.0.","message":"Node.js >=22.0.0 required starting from v8.0.0.","severity":"breaking","affected_versions":">=8.0.0"},{"fix":"Use createServer() from 'screwdriver-api' instead.","message":"setupServer() is deprecated in favor of createServer() in v7.0.0.","severity":"deprecated","affected_versions":">=7.0.0 <8.0.0"},{"fix":"Use import { server } from 'screwdriver-api' instead of import server from 'screwdriver-api'.","message":"The 'server' export changed from default to named in v6.0.0.","severity":"breaking","affected_versions":">=6.0.0"},{"fix":"Always set JWT_SECRET environment variable or in local.yaml.","message":"Environment variables take precedence over config file; missing JWT_SECRET causes auth failures.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Install the package: npm install screwdriver-datastore-sequelize","cause":"Missing optional datastore plugin dependency.","error":"Error: Cannot find module 'screwdriver-datastore-sequelize'"},{"fix":"Set JWT_SECRET environment variable or add to config file.","cause":"JWT_SECRET is not configured.","error":"TypeError: jwt must be a string"},{"fix":"Change the port in config or kill the process using it.","cause":"Port 8080 is already in use.","error":"Error: listen EADDRINUSE :::8080"},{"fix":"Add 'type': 'module' to package.json or use .mjs extension.","cause":"Trying to run ESM code in a CJS environment.","error":"SyntaxError: Unexpected token 'export'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}