Jenkins Pipeline 一键部署SpringBoot项目

介绍

通过jenkins的pipeline 可以很清晰了解发布项目经历了哪些步骤,每一步成功失败一目了然,某一个步骤阶段失败了修复好了问题之后可以不用重头再来构建,可以继续上次失败的步骤执行,还可以清楚的看到每一个阶段执行的日志信息

准备

安装插件

1、安装版本控制工具git 参数选择插件
Git Parameter
2、安装maven pipeline插件:
Pipeline Maven Integration Plugin
3、安装pipeline可视化插件
Blue Ocean

定义pipeline

新建Jenkinsfile文件,内容如下:

import java.text.SimpleDateFormat

def project_name = 'springboot-demo'
def image_repo_credentialsId = 'aliyun-harbor'
def image_repo_url = 'https://harbor.xxx.com/'
def image_name = 'harbor.xxx.com/demo/springboot-demo''
def sdf = new SimpleDateFormat("yyyyMMddHHmm")
def image_version = sdf.format(new Date())
pipeline {
    agent any
    //定义用户可操作参数
    //选择发布代码分支、是否安全检查、 是否单元测试 、部署镜像版本
    parameters {
        gitParameter name: 'BRANCH_TAG',
                  type: 'PT_BRANCH_TAG',
                  branchFilter: 'origin/(.*)',
                  defaultValue: 'dev',
                  selectedValue: 'DEFAULT',
                  sortMode: 'DESCENDING_SMART',
                  description: 'Select your branch or tag.'
       // choice(name: 'IsSkipSonarQube', choices: ['false','true'],description: '')
        choice(name: 'IsSkipUnitTest', choices: ['true','false'],description: '')
       // string(name: 'image_version', defaultValue: '2022-03-18', description: 'please give a image version')
    }

    stages {
        //step1:拉取代码
        stage('Pull Code') {
            steps {
                git branch: "${params.BRANCH_TAG}",
        	    credentialsId: 'springboot-demo',
        	    url: 'http://xxx.xxx.net/demo/springboot-demo.git'
            }
        }
        //step2:构建打包
        stage('Build Code') {
            steps {
                withMaven(
                  jdk: 'jdk1.8',
                  maven: 'mvn',
                  mavenSettingsConfig: '538d50cf-40fe-4adc-b564-d091ff473552') {
                      sh "mvn -U clean package -pl ${project_name} -am -Dmaven.test.skip=${IsSkipUnitTest}"
                  }
            }
        }
        //step3:制作镜像并推送到镜像仓库
        stage('Docker Image'){
            steps {

                withDockerRegistry(credentialsId: "${image_repo_credentialsId}", url: "${image_repo_url}") {
                      sh "docker build -t ${project_name}:${image_version} ${workspace}/${project_name}"
                      sh "docker tag ${project_name}:${image_version} ${image_name}:${image_version}"
                      sh "docker push ${image_name}:${image_version}"
                      sh "docker rmi ${image_name}:${image_version}"
                }
            }
        }
       


    }
}

创建pipeline任务

Jenkins Pipeline 一键部署SpringBoot项目_第1张图片
Jenkins Pipeline 一键部署SpringBoot项目_第2张图片

Jenkins Pipeline 一键部署SpringBoot项目_第3张图片

Jenkins Pipeline 一键部署SpringBoot项目_第4张图片
Jenkins Pipeline 一键部署SpringBoot项目_第5张图片

构建发布

Jenkins Pipeline 一键部署SpringBoot项目_第6张图片

查看构建过程

点击【打开Blue Ocean】,如下图所示
Jenkins Pipeline 一键部署SpringBoot项目_第7张图片
点击上图中运行中的最新的任务,如运行编号为2的,如下图所示:
Jenkins Pipeline 一键部署SpringBoot项目_第8张图片

你可能感兴趣的:(开发工具,系统架构设计,CICD)