screwdriver

screwdriver-cd活跃维护

面向持续交付的开源构建平台,用 JavaScript 编写,可在 Kubernetes 上运行,帮助团队搭建可扩展的 CI/CD 流水线。

An open source build platform designed for continuous delivery.

v4.1.0发布于 2020-10-13 20:39 UTC1,051star +2 / 7 天175fork同步于 2026-11-10 11:51 UTC

怎么上手

由 README 提炼,执行前请确认
git clone [email protected]:screwdriver-cd/screwdriver.git ./
npm install
vim ./config/local.yaml
npm start
硬件要求按 README 说明

README 未说明显存或 GPU 要求;需 Node v12.0.0 或更高版本,以及 Kubernetes 或 Docker 环境。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自包含可插拔的持续交付构建平台 API,帮你构建、测试并持续交付软件

面向持续交付的开源构建平台,用 JavaScript 编写,可在 Kubernetes 上运行,帮助团队搭建可扩展的 CI/CD 流水线。

核心能力

  • 预置 18 个资源插件,覆盖构建、流水线、密钥等
  • 执行器可选 Kubernetes、Docker 或 Nomad
  • SCM 可选 GitHub、GitLab 或 Bitbucket
  • 数据存储支持 Postgres、MySQL 和 Sqlite
  • 用 local.yaml 或环境变量覆盖默认配置

容易踩的坑

需先按集群管理文档完成配置,否则无法正常启动;运行全部单元测试可能内存不足,需设置 NODE_OPTIONS=--max_old_space_size=4096;功能测试需先 fork screwdriver-cd-test 下的 functional-* 仓库并配置 token。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v4.1.0
  1. v4.1.0最新正式版2020-10-13 · 2020-10-13 20:39 UTC

    4.1.0 (2020-10-13)

    Features

    • 1415: Add logic to handle webhook events from external repos (#2187) (0933d72)
  2. v4.0.202020-10-13 · 2020-10-13 19:24 UTC
    查看更新说明

    4.0.20 (2020-10-13)

    Bug Fixes

  3. v4.0.192020-10-13 · 2020-10-13 04:57 UTC
    查看更新说明

    4.0.19 (2020-10-13)

    Bug Fixes

  4. v4.0.182020-10-07 · 2020-10-07 23:24 UTC
    查看更新说明

    4.0.18 (2020-10-07)

    Bug Fixes

  5. v4.0.172020-10-06 · 2020-10-06 00:40 UTC
    查看更新说明

    4.0.17 (2020-10-06)

    Bug Fixes

    • 2068: Large step logs causes browser to hang (#2200) (0faaaa9)

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Screwdriver API

    Version Pulls Stars Build Status Open Issues Coverage Vulnerabilities License Slack CII Best Practices

    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.

    Table of Contents

    Background

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

    For more information about Screwdriver, check out our homepage.

    Installation and Usage

    Plugins

    This API comes preloaded with 18 (eighteen) resources:

    Three (3) option for datastores:

    • Postgres, MySQL, and Sqlite (sequelize)

    Three (3) options for executor:

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

    Three (3) options for SCM:

    • GitHub (github)
    • GitLab (gitlab)
    • Bitbucket (bitbucket)

    Prerequisites

    To use Screwdriver, you will need the following prerequisites:

    From Source

    $ 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
    

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

    Using In-A-Box

    Our in-a-box script brings up an entire Screwdriver instance (ui, api, and log store) locally for you to play with. Follow instructions at https://github.com/screwdriver-cd/in-a-box#screwdriver-in-a-box.

    Using Helm

    This chart bootstraps the whole Screwdriver ecosystem and also nginx ingress controller.

    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: [email protected]
    

    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.

    Testing

    Unit Tests

    npm test
    

    Note: You might run into memory issues running all the unit tests. You can update your ~/.bashrc file with the line below to ensure there's enough memory for tests to run:

    export NODE_OPTIONS=--max_old_space_size=4096
    

    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
    

    Contribute

    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.

    License

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