jenkins共享ci阶段

jenkins共享ci阶段

需求

一个产品包含多个服务,这些服务的流水线都是类似的:制作制品+构建并推送镜像+构建并推送chart包+触发自动部署。我们期望将流水线拆分为ci流水线、cd流水线,ci流水线包含:制作制品+构建并推送镜像+构建并推送chart包,cd流水线包含:触发自动部署,ci流水线公用的只有一条,每个服务都有一条cd流水线。当构建cd流水线时先触发ci流水线,ci流水线执行完成后继续执行cd流水线各阶段

Pipeline项目实现共享ci阶段

创建ci流水线项目

  • 点击【New Item】选择Pipeline,填写项目名称
    在这里插入图片描述
    在这里插入图片描述
  • 将ci流水线项目配置成参数构建项目,配置需要的参数,以供构建时传递参数到执行流水线,根据不同服务的信息生成对应服务制品
    在这里插入图片描述
  • 配置通过调用url触发构建,输入框中的值为url触发时需要传递的token参数值。此ci流水线除可以供cd流水线触发,还可以通过代码调用url触发生成制品
    在这里插入图片描述
  • 根据需要编写Pipeline脚本。点击这里查看pipeline文档
//所有的脚本命令都放在pipeline中
pipeline {
    //指定任务在哪个集群节点中执行
    agent any
    
    stages {
        stage('打印参数及全局变量') {
            steps {
                sh 'echo ${gitUrl}; sleep 20'
                sh 'echo ${BUILD_ID} - ${BUILD_NUMBER}'
            }   
        }    
        
        stage('生成源码存储目录') {
            steps {
                echo '此ci阶段为产品下所有服务公用,因此需要将代码放置到根据uuid动态生成的目录'
            }   
        }
        
        stage('拉取gitlab仓库代码') {
            steps {
                echo '拉取代码到上部创建目录中'
            }   
        }
        
        stage('通过maven编译打包') {
            steps {
               sh '/u01/app/maven/bin/mvn clean package'
            }   
        }
        
        stage('生成并推送镜像') {
            steps {
               echo '生成并推送镜像'
            }   
        }
        
        stage('生成并推送chart包') {
            steps {
               echo '生成并推送chart包'
            }   
        }
    }

    post {
        always {
            echo '清理目录'
        }
    }
}
测试ci流水线项目
通过页面构建测试ci流水线
  • 点击【Build with Parameters】填写参数值,点击【Build】构建ci流水线
    在这里插入图片描述
通过url远程构建ci流水线
  • 使用postman配置GET请求,并配置好认证信息。token即上面ci流水线配置远程构建设置的token值
http://172.0.0.1:8200/view/hsops.cd28e65c-59e3-46fc-afd3-8002ab0b2128.devops-launch9/job/hskp-devops-service-p/buildWithParameters?token=12345&gitUrl=http://172.0.0.1:8181/hskp-devops-launch5/hand-hzero-gateway.git

在这里插入图片描述

创建cd流水线项目

每条cd流水线对应一个产品服务

  • 点击【New Item】选择Pipeline,填写项目名称
    在这里插入图片描述在这里插入图片描述
  • 将cd流水线项目配置成参数构建项目,配置需要的参数,以供构建时传递参数到执行流水线,这里需要配置的参数包含ci流水线需要的参数
    在这里插入图片描述
  • 根据需要编写Pipeline脚本。此脚本首先触发ci流水线项目构建,完成之后再触发部署
//所有的脚本命令都放在pipeline中
pipeline {
    //指定任务在哪个集群节点中执行
    agent any
    stages {
        stage('ci') {
            steps {
                build job: 'hskp-devops-service-p', wait: true, 
                    parameters:[string(name: 'gitUrl', value: 'http://172.23.16.219:8182/hskp-devops-launch5/hand-hzero-gateway.git')]
            }
        }    
        
        stage('部署') {
            steps {
                echo '执行部署'
            }   
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值