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

news2024/11/28 18:56:38

目录

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版 常规自动化操作 结束]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字化医院PACS影像系统 三维影像后处理技术应用

PACS影像存取与传输系统以实现医学影像数字化存储、诊断为核心任务,从医学影像设备(如CT、CR、DR、MR、DSA、RF等)获取影像,集中存储、综合管理医学影像及病人相关信息,建立数字化工作流程。 PACS系统可实现检查预约、…

【C++入门】内联函数

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 目录 什么是内联函数内联函数特性 什么是内联函数 内联函数概念: 内联函数就是以inline修饰的函数叫做内联函数&a…

No.051<软考>《(高项)备考大全》【冲刺5】《软考之 119个工具 (3)》

《软考之 119个工具 (3)》 41.进度计划编制工具:42.绩效审查:43.卖方投标分析:44.质量成本:45.成本汇总:46.历史关系:47.资金限制平衡:48.挣值管理:49.预测:50.完工尚需绩效指数:51.成本效益分析:52.试验设计:53.七种基本质量工具:54.统计抽样:55.其他质…

Linux拓展:链接库

一.说明 本篇博客介绍Linux操作系统下的链接库相关知识,由于相关概念已在Windows下链接库一文中介绍,本篇博客直接上操作。 二.静态链接库的创建和使用 1.提前看 这里主要介绍的是C语言的链接库技术,而在Linux下实现C语言程序&#xff0c…

Web入门脚本三:一键完成与dex的交互,羊毛党必备

前言 该脚本用途:一键可以完成与dex的所有交互,包括2次swap,添加/移除流动性,以及farm和提取LP。一次运行可以有6条交易记录。 无论是个人单刷还是羊毛党批量地址刷交互都完美适配。当然反女巫方案不在这次文章的讨论范围内。 一、…

Python快速入门,看这一篇就够了

大家好,我是老三,我最近在看一些人工智能相关的东西,大部分相关的框架,都是用Pyhon写的。 老三会用Python,但谈不上多熟练,最近准备拿Python作为自己的第二语言,那么这期我们来一起快速梳理一下…

程序员该如何学习技术

程序员该如何学习技术 前言 学习是第一生产力,我从来都是这么认为的,人只有只有不断地学习才能意识到自己的缺点和不足,身为程序员,我更认为人们应当抱着终身学习的想法实践下去,这是我所一直践行且相信的。 高处不胜寒…

体验 GPT-4 后,回顾 OpenAI 发展历程及感悟

从 ChatGPT Plus 发布第一天就开始重度使用,刚刚和新发布的 GPT-4 进行了 20 多轮对话,来简单介绍下这几个模型背后的技术,并且分享下感受。 GPT 在发展历程中,一共经历了 4 个阶段,分别是 1、2、3、4。这几个阶段分别…

【VM服务管家】VM4.x算法模块开发_4.3 联合Halcon开发

目录 4.3.1 联合开发:集成HALCON第三方算子到VM工具箱的方法 4.3.1 联合开发:集成HALCON第三方算子到VM工具箱的方法 描述 环境:VM4.0及以上 VS2013 问题:有的用户在使用VisionMaster软件在开发视觉项目时,可能同时也…

来了来了,我使用 ChatGPT 开发了一个 AI 应用

ChatGpt 实在太火爆了,很多人在问我怎么使用 chatgpt 开发一个 AI 应用程序。这不就来了吗~ 开始 你所需要准备的一个OpenAI 的密钥和一点点代码来发送提示并返回结果,例如下面这段代码: import { OpenAIApi, Configuration } from openai…

基于RAM树莓派实现智能家居:语音识别控制,Socket网络控制,火灾报警检测,实时监控

目录 一 项目说明 ① 设计框架 ② 功能说明 ③ 硬件说明 ④ 软件说明 二 项目代码 <1> mainPro.c 主函数 <2> InputCommand.h 控制设备头文件 <3> contrlDevices.h 外接设备头文件 <4> bathroomLight.c 泳池灯 <5> livin…

GraphQL(三)DataLoader 详解

DataLoader是一个通用实用程序&#xff0c;用作应用程序数据获取层的一部分&#xff0c;通过批处理和缓存为各种远程数据源&#xff08;如数据库或 Web 服务&#xff09;提供简化且一致的 API 批处理 const user await userLoader.load(1); const invitedBy await userLoade…

【C++】7. auto和nullptr(c++11)

文章目录 一、auto二、nullptr 一、auto 在C98中&#xff0c;auto是一个存储类说明符&#xff0c;表示变量具有自动存储期&#xff0c;即在函数或块的作用域内创建和销毁。 在C11中&#xff0c;auto是一个类型占位符&#xff0c;表示变量的类型由其初始化器自动推断。 使用如下…

分类和扩展与继承

文章目录 [TOC](文章目录) 分类定义分类的使用使用场景使用注意点 Extension 扩展分类和扩展的区别 继承的定义使用注意点 新建一个分类 分类基础知识 分类 分类是指为已有的类添加方法&#xff0c;也可以说是将很多很复杂的代码划分为几个分区。 定义 分类的作用是扩展已有…

第十四届蓝桥杯大赛软件赛省赛 Java 大学 B 组题解

试题 A: 阶乘求和 本题总分&#xff1a;5 分 【问题描述】 令 S 1! 2! 3! ... 202320232023!&#xff0c;求 S 的末尾 9 位数字。 提示&#xff1a;答案首位不为 0。 【答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一 个整数&am…

Linux信号:SIGCHLD信号和僵尸进程

1. SIGCHLD信号产生条件&#xff1a; &#xff08;1&#xff09;子进程终止&#xff1b; &#xff08;2&#xff09;子进程收到SIGSTOP暂停&#xff1b; &#xff08;3&#xff09;子进程处于暂停状态&#xff0c;收到SIGCONT被唤醒。 2. 捕捉SIGCHLD&#xff0c;避免僵尸进程&…

网络钓鱼:工作场所保护电子邮件安全的五个步骤

导语&#xff1a;Sophos电子邮件产品管理高级总监David Mitchell分享了他的主要技巧&#xff0c;以优化工作场所的电子邮件安全性。 Sophos电子邮件产品管理高级总监David Mitchell分享了他的主要技巧&#xff0c;以优化工作场所的电子邮件安全性。 尽管工作场所的聊天和即时…

云原生时代崛起的编程语言Go基础实战

文章目录 概述定义使用场景Go 安全 使用须知搜索工具Go基础命令标准库 基础语法Effective Go 概览命名规范注释变量常量(const)控制结构数据类型迭代&#xff08;range&#xff09;函数指针字符串和符文结构体(struct)方法接口(interface)泛型错误&#xff08;errors&#xff0…

iOS描述文件(.mobileprovision)一键申请

转载&#xff1a;IOS描述文件制作教程 iOS描述文件(.mobileprovision)一键申请 在主界面上点击描述文件按钮。 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 新建ios描述文件 然后点击新建&#xff0c;然后输入描述文件名称&…

数据库设计与前端框架

数据库设计与前端框架 学习目标&#xff1a; 理解多租户的数据库设计方案 熟练使用PowerDesigner构建数据库模型理解前端工程的基本架构和执行流程 完成前端工程企业模块开发 多租户SaaS平台的数据库方案 多租户是什么 多租户技术&#xff08;Multi-TenancyTechnology&a…