简介
Shippable是一个DevOps流水线平台,可帮助开发人员和DevOps团队获得CI / CD,并使软件发布频繁,可预测且无错误。为此,我们将所有DevOps工具和活动连接到事件驱动的有状态工作流中。 Shippable的DevOps Automation平台为您提供了一种简便的方法,可为您的项目设置持续集成(CI),并针对源代码控制存储库中的任何更改自动进行单元测试,打包和部署。
背景
有大量的DevOps工具可用于配置,配置管理,持续集成,部署等。如今,大多数DevOps活动都在功能孤岛中实现了自动化,从而使软件交付过程与许多“自动化岛”脱节了。组织使用文化协作或临时脚本来管理这些工具和活动之间的依赖关系。这些方法不仅效率低下,而且创建,维护和重用也很麻烦。更重要的是,它们为您的持续交付计划增加了摩擦。
我们的DevOps流水线平台可帮助您轻松快速地构建事件驱动和状态化的端到端连续交付工作流程。因此,您的团队可以专注于为客户提供业务价值,而不是构建本地的即席脚本来实现DevOps自动化
DevOps活动涵盖整个软件交付生命周期。这些由许多团队和许多工具执行。但是,大多数这些活动可以大致分为5个时段
- 持续集成(CI):对于每次代码更改,都要构建,单元测试和打包应用程序。您也可以将软件包推送到PaaS / IaaS或工件存储库。
- 持续交付(CD):创建事件驱动的工作流,以实现应用程序发布自动化,以及多阶段部署,语义版本控制和测试套件的执行。
- IT运营:使用Ansible,Terraform,Puppet或Chef自动执行基础架构配置,映像构建和安全修补工作流。连接IT Ops和CD工作流以创建依赖关系图,从而无需手动交换信息。
Shippable可轻松实现这些存储桶中的活动自动化,然后将它们连接以实现持续交付。它具有高度的灵活性,并提供了许多本机功能,同时还与您喜欢的工具集成在一起。
但是,重要的是要记住,Shippable使您几乎可以自动化任何东西。是否想在Alexa上使用语音命令进行部署?校验。是否想将您的智能咖啡机设置为每天早上8点启动?校验!
我们通过一系列预定义的Jobs优化了DevOps的平台,这使自动化DevOps活动非常容易。但是,对于任何具有编程技巧和想象力的人来说,朴素的旧壳Job就是天空的极限。
更多详细文档参考平台文档:http://docs.shippable.com/platform/overview/
支持项目类型很多
CI工作流程(开始体验CI了 激动激动~)
下图显示了非常基本的CI工作流程。Shippable从您的源代码管理接收到传入的Webhook,并启动构建计算机。Shippable代理将出现在构建机器上,并启动构建容器,在其中执行CI命令。在构建过程结束时,您可以推送到任何端点。该端点可以是Artifactory或Docker Hub之类的工件存储库,也可以是PaaS / IaaS / Container Service端点。
部署到端点后,您的CI工作流将停止。如果您想定义端到端的应用程序交付管道,请查看我们的持续交付教程,该教程向您展示如何配置多阶段部署,使用语义版本控制和批准门发布mgmt,以及我们的IT Ops部分,向您展示如何进行供应和基础架构管理活动是您工作流程的一部分。
CI功能体验
首先按照官方文档的描述,将github中的演示项目fork到自己的仓库中
原来是一个前端项目亮点是与Jenkinsfile类似的shippable.yml
同步github项目(默认同步的是公开的,可选择私有项目)
大概1分钟同步完成,然后选择开启项目的CI功能
回到项目页面选择构建(这里显示的rebuild是因为已经构建过一次了)
查看构建信息
构建日志
测试结果
测试覆盖率
灵活的yml配置文件
代码语言:javascript复制language:
node_js: # language runtime
- #language version
# Optional: select the node pool or node pools you want to run this job on,if different from default
runtime:
services:
- #any supported service
depth: #postive integer
gitConfig:
- #git config 1
- #git config 2
vote:
on_success:
Verified: 1
Code-Review: 2
on_failure:
Verified: -1
Code-Review: -2
env:
- #env1=foo
- #env2=bar
matrix:
build:
pre_ci:
pre_ci_boot:
image_name:
image_tag:
pull:
options:
ci:
- #command1
- #command2
post_ci:
- #command1
- #command2
on_success:
- #command1
- #command2
on_failure:
- #command1
- #command2
always:
- #command1
- #command2
cache:
cache_dir_list:
- #dir1
push:
- #command1
integrations:
notifications:
- integrationName:
type:
recipients:
- #recp1
- #recp2
hub:
- integrationName:
type:
agent_only:
构建数据展示(按照单个项目和平台所有展示)
丰富的集成方式