00:00
同学们好,我们接下来带着大家一起学习,呃,Jackins的流水线,也就是他的pipeline,这是它的最核心的呃一部分内容,也是我们呃本次课程最后的一部分,那在流水线当中呢,我们可以创建更加灵活,更加自由的这种呃配置,同时呢,它也更利于像我们项目比较大团队呃多人同时协作这种方式,传统的操作界面呢,Web UI,当然也可以去完成我们整体的项目的构建发布啊,包括一些测试等等等等功能。但是一旦要是。操作员不只是一个人,需要团队协同来操作配合的话,那么很有可能你在这边增加了一个什么配置选项,多点了一个勾,那么别人呢,可能看不太见,那如果要是把我们的所有的UI操作,Web UI的操作全部都会落地成代码,那么我们的这个程序员呢,呃,在阅读的时候呢,就会更方便一些,代码配合注释,那么也更是我们程序员呢这种使用,呃,这种这个中间件工具的这种方式。
01:08
呃,这个jackins的pipeline啊,它有点像我们docker的这个docker file一样,Docker file呢啊,其实就是把我们启动docker的所有的命令打包成了一个文件供啊多人来编辑的啊,那那么我们这个呃web UI也是在Jack的web UI里边所操作的一切命令也都可以把它落地到我们的drag里。啊,那么这样的话,呃,就可以,呃,像开发这个。嗯,像呃,我们Java的项目里边有这种工作流引擎啊,这种类似的这种方式去完成我们对于项目构建的开发了,那么这种开发任务呢,呃,一般来说也都是专业的运维开发人员去做的,那普通的Java成型呢,如果掌握了此项技能的话,那肯定也是对自身的这个价值会有所提升的啊。
02:03
那么我们接下来啊,先带大家来看一下呃,我们用代码来完成呃一项呃构建操作,那么究竟究竟需要哪些步骤,这个五个步骤呢,是它的最核心的必备部分,也就是第一个呢是pipeline,第二个呢是加一个agent,然后接下来呢,Stages,然后具体的每一个stage,一个stage呢,呃表示在我们执行整个呃流水线当中的其中的呃一个阶段stage里边呢,可以包含很多的,这个stage可包含多个阶段,每一个阶段呢都可以做不同的事情,然后step就代表在每一个阶段里边我们都需要做哪些事情。那这种呃,配置的话,我们是需要在每一个流水线任务里边都必须得有的,这是必备的几条命令,那么我们先看一下这个流水线的,呃,这种任务究竟长啥样,我们先新建一个这个item,在这儿呢,选这个pipeline。
03:03
PI。然后创建出来之后。这个UI界面呢,明显要比我们之前的这个传统的UI界面要这个功能要少得多,同时它的呃选项你看在这个general里边的这个选项和我们之前也不一样了啊,多多少少有一些区别的。啊,比如说我们在原来的那个界面里边能看到,呃,尽可能的让我们呃这个job去做这种并发构建的操作,然后呢,在这里边呢,啊,我们能看到是do not allow concurrent build的,就是不要尽可能不要的去这个做这种并发,它是反着来的,就是默认情况下,它会帮我们去尽可能的去做这种并发构建,然后可选的呢,其实并不是特别多,然后在这下边的这个这个流水线相关的啊这些我们可操作的空间了,在这里边呢,其实就是我们写代码的地儿,就类似于这个docker file啊,我们去写这个每一行要执行的这个指令,在这里边它会给我们,嗯,有两种方式,第一种呢,是我们直接把我们的代码内嵌到我们的呃,这个这个脚本里,直接在这呢,写完之后点个保存,然后呢就提交上去了,然后在执行任务的时候,他就会一步一步的按照我们这个代码来执行。
04:23
第二种方式呢,它是通通过这个啊,我们的这个原服务器啊,或者叫代码托管服务器。去把咱们的这个,呃,这个给它给拉取回来,然后让他去执行啊,呃在这个在在这呢,我们先使用这种第一种方式,直接在这去敲代码,这个代码的格式在这里边呢,还有一些样例,比如这第一个hello word啊,像这里边呢,就嗯满足了我刚刚跟大家说的这个五个节点的要求,首先第一个呢是pipeline。然第二就是,然后stage stage还有这个总共这个这个这个这个标签是必我们一个一个来给他解读一下,这五个标签是干嘛的,我把这个。
05:10
界面放大一点。大家看啊,这第一个pipeline,这指的就是我们整个的一个pipeline的总体的定义啊,这个格式呢,我们看起来也是比较友好的,它比较像我们写的这个Jason对吧?啊,他也有点像我们配置这个YML是吧,这种脚本画的这种配置啊,这边呢,会有一个大的开口,整体的这个pipeline所有的定义全部都在这个pipeline里,除了这个pipeline口这个包住的内容内容之外啊,我们还可以有一些额外其他的定义,比如说一些常量的定义啊,在都可以在这个pipeline的外边,外部去这个设置,然后在下边的这个是agent。Agent表示的是我们在执行当前的这个流水线任务的时候,我指定在哪台机器上去执行啊,在这呢,配置了I啊,这就是表示啊,我们把这个执行具体分配到哪台,呃,这个这个节点上的这个任务啊,就交给了jackins,让他去帮我们去分配,然后stages这里边表示我们接下来啊,开始去执行每一步的这个操作了,然后每一个stage啊里边呢,我们都可以去设置一个标签,我们要去干嘛。
06:24
啊,这是哪一步所所谓的流水线啊,就像是工厂组装产品的这个流水线一样,每一个环节里边呢,都去做自己该做的事情,这就是其中的一个环节,那么每一个环节里边呢,还会有一些具体的操作啊,比如说我们是一个装手机的操作,因为上学的时候在。手机厂实习过啊,其实就是打工。流水线的最开始呢,会有一个人放一个盒子,然后第二个阶段,下一个阶段呢,会有一个人往里边啊放一个这个,呃,这个手机的这个托盘,在下一个阶段呢,会有人往里放一个手机,在下一个阶段会放充电器,然后后边放说明书等等等等到最后一个阶段全部都执行完成之后,表明我所有的stage全部都全部都结束了啊,所有的stage结束之后呢,就进入结束阶段了。
07:15
啊,这是stage,每一个阶段呢,我们都可以去定义一个名称,比如说在这儿我去放盒子对吧,那真正的我们去执行这种,呃,持续集成的话呢,我们肯定是第一步先把代码给拉回来嘛,对吧,就拉取代码。这也可以写中文啊。拉取代码。嗯。哎,这个。应该是这个。呃,字符集的问题是吧。这拉取代码。哦。这个很尴尬,那在外边儿先写了拉取代码,当然这个我可以在这个开发工具里边去,呃,做这个开发啊,对吧?啊这样粘过来就没事了。
08:09
拉取代码,这是第一步,然后可以有其他的这个stage。那下一步呢,哎,这怎么多出来了,哎,复制一个拉取代码之后呢,我们可以去啊这个。执行构建。还是在外边儿吧,执行构建。执行构建完之后呢,啊,是不是就整体的就结束了对吧?然后在这呢,我们可以去改一下这个step,这里边呢,是真正去执行每一个这个stage的这个具体的这个细节,那么在每一个环节里边呢,我们要我们都要干嘛啊,都可以在这里边写,就是真正的代码逻辑,比如我呃拉取代码,在这儿要配一个GI服务器对吧,从get服务器把我的代码啊克隆下来啊然后呢,执行构建呢,在这儿呢,需要去调取这个maven去build对吧?啊然后在这儿就是我们去这个啊,比如拉取代码成功。
09:11
算了啊拉取成功,咱们可以在别的地儿写完,然后复制过来啊,然后这儿呢。啊,这是构建完成。这是一个最基础最简单的就可以这个这个这个了,然这个表我是不是要用这个gro的这个啊,Gro是一种啊,是一门编程语言啊,啊也是运行在这个GVM虚拟机里的,它可以和这个Java完美结合,Grovi这个呃,插件功能呢,也不叫插件功能啊,就是Jackson呢,它支持groy,那也是使得我们这个流水线呢,更加的强大了,那我们在写一些这个更加复杂的业务逻辑的时候,就可以类似于我们去写我们的业务业务代码一样了,比如写Java代码,写一些if去连接一些什么其他的东西啊,做一些这种循环操作,在这里边也都可以了,在这咱不需要这个高位沙盒。
10:13
在不拉不拉不拉啊,这大概是你保存一下就行了啊,这不需要这个审核的保存。那么一个这个pipeline的这么一个项目呢,我们就呃创建完成了啊,这这是这个pipeline项目,那么运行一下大家看看。哎,它现在在我们这个当前的主节点上运行着,运行这个成功了,我们点开看一下。在这儿呢,有这个,呃,视图,也就是我们整个任务的视图,这和我们之前那个项目就不太一样了,原来那个项目呢,在这儿点开呢,是没有这个视图概念的,也就是他没有一步一步流水线的概念,这个是有的,你看我们刚刚这两步,一个是拉取代码,一个是执行构建,在下边呢还会显示耗时多少。
11:02
把鼠标放在上边。啊,我们可以看这啊,这是星号一井啊,就是一号构建,我们第一次构建,这是时间。然后这是耗时拉,取代码用了400多毫秒,执行构建用了200多毫秒。把鼠标放上面呢,啊,这还可以点这个log logs,这可以把我们整个的这个啊输出内容呢,全都在这儿啊,以这个UI比较友好的形式给我们,呃,这个展示出来,当然我们现在这个输出呢,只有一行,如果比较多的话呢,这就可以去折叠了。啊,这种这个查看这个我们任务的方式,这是呃,我们之前的那种,呃,这种那种构建啊,是不具备的啊,我们在多部构建,或者说我们的项目比较大,执行的构建的复杂度比较高的时候,这么去观察的话,是比较直观的,然后同样啊,我们还可以去看它的这个输出。
12:00
诶。呃,在这儿这个cancel output,这和我们之前看这个,呃,它的这个输出的信息呢,很类似,但是呢,这有一点不一样,大家可以看啊,这有很多可以点的地儿了,Ons。啊,这是它运行在了哪个节点上啊,然后每一步就是pipeline,每一步呢,在这里边呢,都给我们显示出来了,最后呢,Finish的success了啊这是呃,咱们的这个pipeline啊,它和这个我们传统项目也不叫传统项目啊,这种web UI创建的项目呢,有点不一样,最不一样的地儿在这儿从指定阶段重新运行,大家看。这可以指定阶段啊,是你是想重新运行哪个阶段,比如拉取代码阶段,还是执行构建阶段,就可以再来一遍,你再执行一下拉取代码阶段。然后这个结果我们可以在这看到啊。诶,执行完了把拉取代码这个阶段呢,又给重新执行了一遍啊。
13:00
然后在这儿,这是第二次执行了。是吧,那除了这种观察方式之外呢,呃,Jacks还提供了另外的一种这个呃web UI,对于这个我们land的web UI叫blue ocean,这个blue ocean在观察我们整个执行的过程的时候,要比。它传统的这种,或者说这种老的这种web UI呢,要漂亮的多啊,但功能呢,其实也都差不多,这个blue ocean想要用的话,只需要把这个插件给它给装上就可以了,还是在这个插件中心。我们在这儿。搜一下blue。就是蓝海。OCEAN。Blue ocean这个给它勾上,然后安装一下这个blue ocean啊,由于它是web UI,所以它依赖的这个,你看各种的这些,呃,UI相关的,前端相关的东西比较多,然后JS啊,什么API等等等等,当然它不只是给我们提供了比较好看的UI界面啊,还额外附赠了很多新的功能啊,我们稍微等一会儿就可以把这个呃,这个这个UI给它给装上了。
14:16
嗯。先暂停一下啊。呃,同学们稍微等了那么两三分钟,这个呃,插件呢,安装完了,然后我们返回首页。在这儿呢,右边的菜单里边就能看到了这个blue ocean,你点一下就能到它这个新的这个UI界面里了,这里边同样还是有咱们的这个这个啊job,你看这个my pipeline这里边呢,就可以点开,然后这么去查看它的执行的每一个阶段了啊,比原来的那个UI看起来呢,要更直观那么一些,然后这个重新执行的话,哎,你看在这直接点一下也可以了,不像刚才。啊,那么那么麻烦了是吧,啊,它可以执行啊,其中的某一个阶段啊,不像我们原来那样要重新执行的话呢,就整体全都得重新来一遍。
15:07
啊,这是咱们的这个新的这个web UI,你点一下叉,然后退回去,然后呢,嗯。这个啊这儿呢啊,就退回就退回到了咱们这个啊主的这个界面就是原来这个界面了啊,这是它这个web UI啊,我们已经装好了啊,那那么咱们这个更复杂的命令,还有这个编写方式。咱们下节课再继续给大家讲。
我来说两句