* jenkins 支持 pipeline(流水线) 的方式进行发布,好处是,可以将整个发布流程代码化,并且可以将发布代码上传到gitlab,便于多人维护,接下来就说明一下,使用 pipeline 方式进行发布并结合 Jenkinsfile 的设置流程,以及目录模板


* 新建任务 -> 选择 文件夹(针对有多个服务的情况,最好先创建一个文件夹,类似于分组的概念),如下图

     

* 进入新建的文件夹(myproject) -> 新建任务 -> 选择 pipeline(流水线任务),如下图

      

* 取消并发构建,设置旧的构建保留时间

      

 * 设置gitlab触发器,即当gitlab的某个分支(如:test分支)有push事件时,通知 jenkins 自动发布,如果你是手动发布,则忽略此步骤

    

        

        

* 注意: GitLab webhook URL 需要添加到 gitlab 对应代码仓库的 webhook 中, 选择 gitlab 的 project -> Settings -> Webhooks -> add new webhook, url 处填写 GitLab webhook URL 的值, Secret token 处填写 jenkins 上的 Secret token

* 在 jenkins 的 流水线 配置中 选择 pipeline script from scm, 并输入你存储 jenkins pipeline Jenkisfile 文件的 gitlab 地址,代码分支及证书

     

* 如果你存储 jenkins pipeline Jenkisfile 文件的 gitlab 地址中包含了多个项目,则需要让jenkins只获取对应项目路径下的文件即可

     

    

* Jenkins 上的配置完成,接下来讨论 存储 jenkins pipeline Jenkisfile 文件的 gitlab 中的代码模板(假设为gitlab的project名称为 jenkins-code)

* 由于 jenkins 中我们配置的 pipeline 分支为 test,因此,在 gitllab 的代码库 jenkins-code 中,应该使用 test 分支

* 在 jenkins-code 中可能会包含多个项目的 jenkinsfile 配置,因此目录结构如下:

myproject/
└── server1/
├── Jenkinsfile
├── config/
│ └── application.yml
└── scripts/
├── build.sh
├── clean.sh
├── package.sh
├── publish.sh
└── send.sh

* myporject 为多个项目中的其中一个

* 它包含了一个服务 server1

* server1 下的 Jenkinsfile 为核心编排文件

* 每个服务都必须包含 config 和 scripts 目录

* config 目录主要放服务的配置文件,如生产或测试环境链接的数据库及密码不一样

scripts 目录中

    * clean.sh -- 发布前的清理工作

    * build.sh -- 编译服务,如golang,java,node的编译

    * package.sh -- 将编译好的服务打包

    * send.sh -- 将打包好的服务,发送到远端服务器, 并将 publish.sh 脚本发送到远端服务器

    * publish.sh -- 这个脚本一般在远端服务器上执行,进行发布操作,如创建目录,解压,重启服务等


* 文件模板示例下载地址: 点我跳转


点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部