本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】流水线即代码(2)

时间:2017-03-01 23:55来源:本港台直播 作者:www.wzatv.cc 点击:
node( 'master' ) { stage( 'Checkout' ) {…} stage( 'Code Analysis' ) {…} stage( 'Unit Test' ) {…} stage( 'Packing' ) {…} stage( 'Archive' ) {…} stage( 'DEV' ) {…} } stage( 'SIT' ) { timeout

  node( 'master') { stage( 'Checkout') {…} stage( 'Code Analysis') {…} stage( 'Unit Test') {…} stage( 'Packing') {…} stage( 'Archive') {…} stage( 'DEV') {…} } stage( 'SIT') { timeout(time: 4, unit: 'HOURS') { input "Deploy to SIT?"} node( 'master') {…} } stage( 'Acceptance Test') { node( 'slave') {…} }

  Jenkins2.0使用Groovy实现了一套描述流水线的DSL,我们即便不了解Groovy语言,只要对流水线稍微熟悉,就能按照编写出符合要求的代码。

  类似的工具还有、(LambdaCD)等。

  Concourse.ci使用了基于yaml的DSL,独立抽象出Resource(外部依赖,如:git repo)、Job(函数,对Resource进行get或put操作)以及Task(纯函数,必须明确定义Input/Output)模型。效果图如下:

  

  而λCD则使用Clojure语言实现了DSL,抽象出Pipeline和Step模型,使用了Lisp特有的宏(macro)扩展和自定义普通函数,编写起来简单明了。如下:

  (def pipeline-def `( (either manualtrigger/wait- for-manual-trigger wait- for-repo) ( with-workspace clone ( in-parallel run-some-tests run-smokeing-tests) run-package deploy)))

  

报码:【j2开奖】流水线即代码

  上述的pipeline-def就是这条流水线的定义,极为优雅得是,它的代码和UI事实上构成了——映射的关系,简单到极致。

  值得一提的是,λCD有别于其它同类型的工具,它本身就是一份用Clojure写就的微服务。换句话说,其它的工具可能需要借助基础设施即代码完成自身的安装,但λCD不用,它完全可以采用其它微服务的部署方式,比如用λCD部署它自己,类似于编译器的自举(bootstraping)。这个时候,我们就需要两套λCD服务,一套用于部署λCD自身,另一套部署开发中的工程。

  

报码:【j2开奖】流水线即代码

  小结

  流水线即代码是个新概念,也就意味着我们还需要花时间去探索与之相关的实践,比如,调试和测试(既然是代码就需要测试)。一旦有了这些实践,我们就可以把流水线本身作为产品放到流水线上运作起来,那时将会看到一种很好玩的现象——旧的流水线会构建并部署新流水线,发生上文所说自举(bootstraping)现象,这也表明流水线是不断进化的。

  此外,当流水线成为代码,它在最终的交付物中必然占据一席之地,其潜在的价值还等待我们挖掘,至少从精益的角度,流水线能做的事情还有很多。

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容