crewdriver 是一个为持续交付而设计的开源的构建平台。
其主要开发语言是 JavaScript。
2020年2月19日,CDF(持续交付基金会) 宣布 Screwdriver 作为 CDF 的第一个孵化项目加入 CDF。
在看到这个新闻时,对 Screwdriver 充满好奇,于是在本地体验了下 Screwdriver。
官方对于 demo 体验,提供了开箱即用的友好方式(SD-In-a-box),让我们开始 Screwdriver 体验之旅吧~
本地安装 Screwdriver
最低要求:
Python 2.7
适用于Mac的Docker 1.12+
Docker Compose 1.8.1+
Mac OSX 10.10以上
在终端中运行以下命令,以在本地启动一个 Screwdriver 集群。
python <(curl -L https://git.io/sd-in-a-box)
该命令将运行一个脚本,该脚本将在本地创建一个 Docker Compose 文件,并使用生成的 JWT 和用户提供的 Oauth 客户端 ID 和密码以 Oauth 凭据完成。如果选择 yes,则 Docker 随后将拉取 Screwdriver API,UI 和日志存储镜像,以在本地调出整个 Screwdriver 实例。写入数据库的所有数据都将存储在 data 目录中。
脚本输出截图如下:
拉取 docker 镜像相对比较花时间,等出现下面截图中的 Lanuched!说明安装成功。
要注意的是:如果 ip 发生变化,需要更新 dokcer-compose.yml 和 SCM OAuth 应用;In-a-box 不支持 Webhook(包括 PullRequest )触发构建。
打开 Screwdriver web 界面,截图如下:
登陆并创建第一个 Pipeline
登陆之后,可以看到顶端导航栏有三列:Collections、Tools 以及 Create Pipeline 按钮,截图如下:
创建 Pipeline,只需要填写 git 地址,我这里 fork 了官方用于演示的仓库( https://github.com/screwdriver-cd-test):
点击 Start 启动流水线,运行截图如下:
Screwdriver 特性体验
在 Screwdriver 中,如果要创建 Pipeline,只需要填写 git 仓库地址,在 git 仓库需要包含一个文件:screwdriver.yaml
关于 screwdriver.yaml 的说明,请参考: https://docs.screwdriver.cd/user-guide/configuration/index
在这个文件中有 jobs、steps 等区块,工作流中定义了这些 job 的执行顺序。
工作流功能比较强大:
支持 job 串行
支持 job 并行
支持 job 独立运行
支持 Pipeline 上下游远程触发(Remote Trigger)
支持参数化构建
此外,还支持与 Slack、SonarQube 等集成
下面对上述场景截图说明
job 串行(A—>B—>C),Pipelibe 运行情况截图如下:
job 并行(B、C 并行),Pipelibe 运行情况截图如下:
job 独立运行(job B 独立于 Pipeline 运行,需要手动触发),Pipelibe 运行情况截图如下:
Pipeline 上下游远程触发(job B 需要外部 Pipeline 触发),Pipelibe 运行情况截图如下:
参数化构建,Pipelibe 运行情况截图如下:
丰富多彩的 Loading... 提示语
此外,使用过程中发现 Loading.. 无处不在,并且 Loading 时间稍微有点延迟,比较有点意思的是 Loading.. 下方提示语丰富多彩
Screwdriver 资源
了解 Screwdriver 更多信息,请访问:
Screwdriver 首页: https://screwdriver.cd/
Screwdriver 文档: https://docs.screwdriver.cd/
Screwdriver GitHub: https://github.com/screwdriver-cd
Screwdriver Slack: https://screwdriver-cd.slack.com/