关于持续交付从编译测试到发布上线流程的问题

老师,我这边有2个问题:

1,这边有个流程问题,如果想构建一套,从测试环境有提交代码自动触发拉取代码构建(类似于githook钩子)-执行自动化测试-测试通过-切到线上环境自动部署上线,这一套流程,应该怎么弄,我之前想的是分别构建多个项目,利用父子项目触发器进行项目关联这种方式。这种可以吗,还有什么方式,pipeline得项目可以么,怎么弄?这算不算是一个devops流程了

2,dockerhub中拉取镜像,镜像怎么选择,课程贴写的这个镜像alpine-java:jdk8-slim,我看还有其他很多得java的镜像,一般怎么选择
@princeqjzh

  • 第一个问题就同时问了几个问题,分别作答吧。

这个肯定算是一个devops流程的

利用pipeline这种肯定是可以的

这个的话,理论上可以,但是太过复杂了。
这里说说我的思路:
1、提交代码到仓库,然后自动化构建,触发自动化有两种方式,第一种如果公司仓库有githook的机制的话,那你可以用这个方法触发job;第二种就是采用轮训的机制,jenkins有个scm轮询的机制,这样去触发也可以,根据公司实际情况吧;
2、触发job有了,第二个就是运行自动化测试,这个就是你去拿到你自己的测试代码或者运行其他的测试代码,然后看看能够通过,根据通过的条件再尝试下能不能部署到线上以及必要的钉钉/邮件通知吧

  • 第二个问题,去docker hub去搜索分为两种,第一种就是模糊搜索,这种就是满足条件的很多,那么尽量去使用官方标志的,就是office这种标志的;如果没有官方的推荐,那就是使用星星数最多的;第二种就是全文匹配搜索,这个就精准很多了,因为一个镜像的名字是唯一的,如果课程贴提到的镜像名字是全名字的话,应该只有一个,所以看情况吧;


您说的这个思路,看着实现方式也是构建父子多个项目,利用触发器或者判断job运行success或failure,进行触发下一个job,这样形成一个流程,是这样吗?
1,这样得话基本跟我说的建立流程方式一样的,那按这个思路,你说理论上可以,但是太过复杂了,那怎么样构建比较简单优化方式的流程呢?能详细说明下么?
2,利用pipeline这种肯定是可以的:
利用pipeline可以的话,我主要不太清楚这么多流程是怎么创建pipeline进行划分的,是所有流程写到一个script中么,还是写在多个pipeline项目中,然后进行关联触发,那如果是多个项目的话,每个项目应该怎么划分呢,有没有什么标准或者模型的方式去创建划分pipeline,就比如类似PO分层的方式构建用例类似这样方式,这个pipeline创建的话,这个流程这么多步骤应该怎么创建呢?
麻烦再解答一下吧,谢谢~

只用一个job就搞定了啊,不用父子项目的。上面回答的时候我就犹豫是否要在这里多解释一下,但是还是选择一笔带过。现在看样子还是要多解释啊;触发不说了,git拉取代码,然后执行shell,举个例子,你拉取代码包括了单元测试,那么就是要执行mvn test或者你自己测试代码pytest,执行完成之后,你要判断执行的结果是全部通过还是有失败,用liunx三剑客搞定筛选,然后就到了部署了,部署不就是去链接生产环境的服务器,然后执行xxx命令就搞定了,然后监控如果失败就回滚,失败监控这个多说一句,用shell可以判断命令执行成功与否。这样不就是一个全流程吗,当然这个对shell的要求就高一点,或者你用python搞定这个流程也可以

这个就要看你想怎么做,做成一个pipeline肯定是可以的。如果是多个项目的话,大致上就可以分为,可能你之前做了一个pipeline或者自由风格的job单独执行自动化,线上部署也做了一个job,那么就是新建一个job,拉取代码,然后执行自动化的job,然后在做一个判断,再是否执行线上部署的job,这个的前提在于你想复用你之前写好的job。如果前面的不想复用,那就写成一个pipeline吧

1 个赞

ok,感谢啊,大概流程思路有了,多谢指点迷津