使用Jenkins pipeline模式来构建持续集成环境

        书续前文,前面使用Jenkins-maven构建的方式,搭建了持续集成环境。

 Pipeline介绍:
        是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起
来,实现单个任务难以完成的复杂流程编排与可视化。
        Pipeline的实现方式是一套GroovyDSL,任何发布流程都可以表述为一段Groovy脚本,并且
Jenkins支持从代码库直接读取脚本,从而实现了PipelineasCode的理念。将原本独立运行于多个Job或者多个节点的任务统一使用代码的形式进行管理和维护。

发布流程设计

流程图

目录

1、新建Jenkins JOB任务

2、定义Jenkinsfile脚本文件内容

3、Jenkins构建执行Jenkinsfile脚本

 4、测试执行结果


1、新建Jenkins JOB任务

新建任务: 

设置gitURL及认证信息

其中,上面这个凭证信息,可以从全局凭证里添加

2、定义Jenkinsfile脚本文件内容

整体上分为4个步骤阶段:

1、准备阶段:git上拉取代码,定义镜像文件名字等信息

2、编译构建阶段:使用maven工具编译jar包,使用docker-build工具,制作image镜像

3、把镜像推送到仓库:登录腾讯云镜像仓库(登录 - 腾讯云),把镜像推送到指定的命名空间

4、从镜像仓库拉取镜像,发布到线上:登录腾讯云镜像,拉取刚刚推送的镜像文件,在docker里运行发布

node {

        stage('Prepare') {
            echo "1.Prepare Stage"
            checkout scm
            pom = readMavenPom file: 'pom.xml'
            docker_host = "ccr.ccs.tencentyun.com"
            img_name = "${pom.groupId}/${pom.artifactId}"
            docker_img_name = "${docker_host}/${img_name}"
            echo "group: ${pom.groupId}, artifactId: ${pom.artifactId}, version: ${pom.version}"
            echo "docker-img-name: ${docker_img_name}"
            script {
                build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
                if (env.BRANCH_NAME != 'main' && env.BRANCH_NAME != null) {
                    build_tag = "${env.BRANCH_NAME}-${build_tag}"
                }
            }
        }

        stage('Build') {
            echo "2.Build Docker Image Stage"

            def mvnHome = tool 'maven3.8.3'
            withMaven(maven : 'maven3.8.3') {
                sh "mvn package  -Dmaven.test.skip=true"
            }

            sh   "docker build -t ${docker_img_name}:${build_tag} " +
                    " --build-arg SPRING_PROFILE=prod " +
                    " --build-arg JAR_FILE=target/${pom.artifactId}-${pom.version}.jar " +
                    " ."
        }

        stage('Push') {
            echo "3.Deploy jar and Push Docker Image Stage"

            sh "docker tag ${docker_img_name}:${build_tag} ${docker_img_name}:${pom.version}"
            withCredentials([usernamePassword(credentialsId: 'tengxunyun', passwordVariable: 'dockerPassword', usernameVariable: 'dockerUser')]) {
                sh "docker login -u ${dockerUser} -p ${dockerPassword} ccr.ccs.tencentyun.com"
                sh "docker push ${docker_img_name}:${pom.version}"
            }
            echo "push ok"
        }

        stage('deploy') {
            echo "4.Deploy to line"

            withCredentials([usernamePassword(credentialsId: 'tengxunyun', passwordVariable: 'dockerPassword', usernameVariable: 'dockerUser')]) {
                sh "docker login -u ${dockerUser} -p ${dockerPassword} ccr.ccs.tencentyun.com"
                sh "docker pull ${docker_img_name}:${pom.version}"
                sh "docker run -d -p 58080:58080 ${docker_img_name}:${pom.version}"
            }
            echo "push ok"
        }
}

其中第3步登录腾讯云镜像时,需要凭证信息 (withCredentials),需要预先在Jenkins中设置上,如下:

推送到的腾讯云镜像仓库:

3、Jenkins构建执行Jenkinsfile脚本

点击Jenkins构建

推送镜像成功:

拉取镜像,并在docker发布成功 

 登录虚拟机,查看发布的应用: 

 4、测试执行结果

参考:

超详细!手把手教你用Jenkins pipeline + docker 打造前后端持续集成环境_a10703060237的博客-CSDN博客

Jenkins实践——创建Pipeline的两种方式_360技术-CSDN博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值