Screwdriver:用于持续交付的可扩展构建平台

开源构建平台源于 Yahoo 寻找 CI/CD 平台以满足其不断增长的开发者需求。
164 位读者喜欢这篇文章。
arrows cycle symbol for failing faster

Opensource.com

在 2012 年,在使用 CI/CD 解决方案时遇到性能和扩展限制后,我在 Yahoo 的团队开始寻找另一个平台。我们没有找到满足我们快速增长的开发者需求的解决方案,因此我们构建了 Screwdriver。它是我们在大规模 CI/CD 之旅中的产物,沿途收集的经验教训,以及来自我们内部开发者的大量反馈。在看到 Screwdriver 带来的价值后,我们决定在 2016 年将其开源,与全球 DevOps 社区分享我们的解决方案。

Screwdriver 是一个为大规模持续交付而设计的构建平台。它支持不断扩展的源代码服务、执行引擎和数据库列表,因为它不依赖于任何特定的计算平台。Screwdriver 拥有完整文档的 API 和不断增长的开源社区。 此处 提供 Screwdriver 演示。

Screwdriver features

高度可定制

Screwdriver 的架构允许您在底层使用可插拔组件来替换适合您基础设施的部件。 Screwdriver 集群管理员可以将 Postgres 或 MySQL 替换为数据存储,或者使用 GitHub、GitLab、Bitbucket 或它们的组合进行源代码管理 (SCM)。您还可以根据每个构建管道的需求动态选择执行引擎。例如,您可以将 Golang 构建发送到 Kubernetes 执行器,而您的 iOS 构建在 Jenkins 执行场中运行。

管道即代码

使用 Screwdriver,您可以在 简单的 YAML 文件 中定义您的交付工作流程。 Screwdriver 支持高级工作流程功能,例如

  • 分支过滤 创建具有特定于分支的作业的工作流程。
  • 并行和汇合 工作流程中,作业从单个作业中扇出,然后扇入另一个作业。 为管道创建多个并行工作流程。
  • 远程触发器 构建互连的管道。 当应用程序的依赖库之一已构建时,触发构建应用程序的工作流程。
  • 阻止依据 防止构建并发运行。 当测试作业已在进行中时,阻止部署作业运行。
  • 分离的作业和管道 定义未绑定到任何 SCM 更改的作业。 这些作业可以手动启动,并将使用来自过去事件的 元数据集合

通过模板和命令分享最佳实践

Screwdriver 使专家用户能够定义 模板,这些模板定义可重用的作业。 例如,如果您热衷于 Golang 应用程序应如何构建、测试和部署,您可以为 Golang 创建一个模板,Screwdriver 集群的所有用户都可以将其包含在他们的 管道 YAML 配置 中。

模板允许组织封装关于应用程序应如何构建和部署的最佳实践。 在开源 Screwdriver 实例中,可以浏览示例模板。

模板对于作业的作用就像共享命令对于步骤的作用一样。 模板允许用户共享通用的作业配置,而共享命令允许用户共享通用的构建步骤。 例如,构建 RPM 包或在构建环境中设置 Docker 的步骤可以打包为共享命令。 在开源 Screwdriver 实例中,可以浏览示例命令。

安全性

可插拔的构建步骤允许集群管理员使用授权凭据(例如 SSH 证书颁发机构)设置构建环境。 内置的 密钥管理 允许用户安全地存储构建密钥。 Screwdriver 还提供了一个 基于 VM 的执行器,以提供进一步的构建隔离。 访问令牌 允许用户或管道级别的作用域程序化地与 Screwdriver API 进行交互。

开始使用

立即开始探索 Screwdriver,在您的终端中运行以下命令以在本地启动一个集群。

python <(curl -L https://git.io/screwdriver-box)

此命令将运行一个脚本,该脚本将在本地创建一个 Docker Compose 文件,其中包含使用生成的 JSON Web Token 和用户提供的 OAuth 客户端 ID 和密钥的 OAuth 凭据。 如果您选择这样做,Docker 将拉取 Screwdriver API、UI 和日志存储镜像,以便在本地启动整个 Screwdriver 实例供您试用。 写入数据库的所有数据都将存储在 /data 目录中。

有关更多配置详细信息,请浏览 SD-in-a-box 文档。 要设置生产环境,请访问 集群管理文档

加入 Screwdriver 社区

如果您想了解更多关于 Screwdriver 的信息并为大规模 CI/CD 做出贡献,我邀请您 在 GitHub 上探索该项目在 Slack 上与我们聊天


Jithin Emmanuel 将在 3 月 7 日至 10 日于加利福尼亚州帕萨迪纳举行的第 17 届年度南加州 Linux 展览会 (SCaLE 17x) 上展示 使用 Screwdriver 的 CI/CD

标签
User profile image.
Jithin Emmanuel 是 Verizon Media 开发者平台服务部门的高级软件开发经理。 Jithin 领导 Screwdriver 的产品开发和运营,Screwdriver 是 Verizon Media 大规模使用的旗舰 CICD 产品。

评论已关闭。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.