您现在的位置是:首页 >技术交流 >[jenkins自动化2]: linux自动化部署方式之流水线(下篇)网站首页技术交流

[jenkins自动化2]: linux自动化部署方式之流水线(下篇)

pingzhuyan 2023-06-28 09:19:01
简介[jenkins自动化2]: linux自动化部署方式之流水线(下篇)

目录

1. 引言: 

2.  进阶操作 流水线

-> 2.1 简介:

-> 2.2 最终效果图展示: 

-> 2.3 有没有心动, 真的像流水线一样, 实现了一键部署启动 

 3. 实现方式

 3.1 下载几个插件

 3.2  创建流水线任务

 3.3 点击配置

 3.4 根据流水线语法 写一个简单的helloworld

3.5 执行该语法 打开blueOcean查看效果

 4. 实战操作 一键git+maven+ssh

 4.1 直接上流水线语法吧  带复选框的

4.2 修改位置 

---> 4.2.1 ssh不知道如何更换??

 4.3 最终执行的选择框效果

4.4 开始构建 执行操作 效果图

5. 报错解决

-> 5.1 maven提示没有jdk

---> 5.1.1 查看全局配置中的maven位置

---> 5.1.2 查看java_home 

ps: 最最重要的是 重启jenkins服务, 不是网页


1. 引言: 

借用jenkins 实现基础的自动化部署

jenkins安装配置操作: --> [Jenkins自动化] 实现远端linux自动化部署方式(上篇)

2.  进阶操作 流水线

-> 2.1 简介:

单个服务上述的操作操作起来也是很轻松, 但是面对多个服务的一件部署显得力不从心,

有没有既能拉取代码 打包并且上传的方法呢, 答案是肯定的: 流水线 

实现了git+maven+ssh一键操作

-> 2.2 最终效果图展示: 

-> 2.3 有没有心动, 真的像流水线一样, 实现了一键部署启动 

 3. 实现方式

ps: 没有看上篇的, 需要先看上篇:  [Jenkins自动化] 实现远端linux自动化部署方式(上篇)

 3.1 下载几个插件

1. Extended Choice Parameter Plugin

2. blue ocean

 3.2  创建流水线任务

 3.3 点击配置

拉到最下面 流水线语法

 3.4 根据流水线语法 写一个简单的helloworld

pipeline {
    agent any

    stages {
        stage('pull') {
            steps {
                echo 'Hello World1'
            }
        }
        stage('Hello2') {
            steps {
                echo 'Hello World2'
            }
        }
        stage('Hello3') {
            steps {
                echo 'Hello World3'
            }
        }
    }
}

3.5 执行该语法 打开blueOcean查看效果

 4. 实战操作 一键git+maven+ssh

 4.1 直接上流水线语法吧  带复选框的

pipeline {
    agent any
//     environment {
// 	    VERSION = "${TIME}"   
// 		PATH = "C:/Program Files/Java/jdk1.8.0_201/bin:D:/software/jenkins/pzy/Jenkins/.jenkins/tools/hudson.tasks.Maven_MavenInstallation/apache-maven-3.8.2/bin:$PATH"    
//     }
    parameters {
        extendedChoice (name: 'project_names', type: 'PT_CHECKBOX', description: '请勾选所要发布的项目模块', quoteValue: false, saveJSONParameterToFile: false, 
        value: '服务A,服务B,服务C', 
        descriptionPropertyValue: '服务A,服务B,服务C', 
        visibleItemCount: 11, multiSelectDelimiter: ',', defaultValue: '服务A');
        choice(
          description: 'Which git branch do you prefer to choose?',
          name: 'gitbranch',
          choices: ['develop',"test",'master']
        );
        booleanParam(
        name: 'skip_buid', 
        defaultValue: false, 
        description: '是否跳过构建?'
        )
    }
    
    stages {
        stage('PULL') {
            steps {
                echo "git pull--------${gitbranch}"
                git branch: "${gitbranch}", 
                credentialsId: '7910292c-1a80-4d56-9e3b-147a97ce3ed8', 
                url: 'Git地址 '
                echo 'git pull success--------'
            }
        }
        stage('BUILD') {
            steps {
                echo "${skip_buid}"
                script {
                    echo "${skip_buid}"
                    if (!skip_buid.toBoolean()) {
                        echo 'build --------'
                        bat """
                        D:/software/maven/apache-maven-3.6.3/bin/mvn clean install -Dmaven.test.skip=true
                        """
                        echo 'build success--------'
                    }
                }
                
            }
        }
        stage('SSH'){
            steps {
                script{
                    for (projectname in project_names.tokenize(',')) {
                        echo "ssh --------${projectname + '.jar'}"
                        echo "/bin/sh /opt/app/startup.sh  /opt/app/${projectname+'.jar'}"
                        sshPublisher(
		publishers: [
			sshPublisherDesc(
				configName: 'pzy', 
				transfers: [
				sshTransfer(
					cleanRemote: false,
				 	excludes: '', 
				 	execCommand: "/bin/sh /opt/app/shutdown.sh ${projectname+'.jar'}; /bin/sh /opt/app/startup.sh  /opt/app/${projectname+'.jar'}",
				  	execTimeout: 120000, 
				  	flatten: false,
				   	makeEmptyDirs: false, 
				   	noDefaultExcludes: false, 
				   	patternSeparator: '[, ]+',
				    	remoteDirectory: '/opt/app/',
				     	remoteDirectorySDF: false, 
				     	removePrefix: "${projectname}\target\",
				      	sourceFiles: "${projectname}\target\${projectname+'.jar'}",
				      	usePty: true)],
				       	usePromotionTimestamp: false,
					useWorkspaceInPromotion: false,
					verbose: false)])
                        echo 'ssh sucess --------'
                }
                }
                
            }
        }
    }
}

4.2 修改位置 

git路径, maven位置 服务器上传路径 ssh的账号密码

---> 4.2.1 ssh不知道如何更换??

流水线语法- ssh搜索->ssh创建框 里面就可以操作了

 4.3 最终执行的选择框效果

4.4 开始构建 执行操作 效果图


5. 报错解决

-> 5.1 maven提示没有jdk

---> 5.1.1 查看全局配置中的maven位置

---> 5.1.2 查看java_home 

set java_home

 如果不存在  配置一下即可

ps: 最最重要的是 重启jenkins服务, 不是网页


[jenkins的windows版 常规自动化操作 结束]

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。