背景:本地测试服务器每次需要打包,发布,部署太麻烦,整一个jenkins自动化部署,因为之前做过一次,然后新做了一个短信平台的微服务,突然之间忘了怎么做了,所以才想起来整理一下。

前提:下载安装jenkins并配置相关内容maven和git(可以使用docker安装或者war包安装等等)

笔记:笔者也是之前学习了大量的前辈们总结的教程,然后根据自己的业务整理出自己的,笔记如下

Jenkins git maven window 自动化部署 jenkins实现自动化部署_推送

Jenkins git maven window 自动化部署 jenkins实现自动化部署_1024程序员节_02

 

Jenkins git maven window 自动化部署 jenkins实现自动化部署_jenkins_03

 

Jenkins git maven window 自动化部署 jenkins实现自动化部署_1024程序员节_04

 

Jenkins git maven window 自动化部署 jenkins实现自动化部署_jenkins_05

 

Jenkins git maven window 自动化部署 jenkins实现自动化部署_jenkins_06

 好了回顾完了。开始整理吧。

===================正文如下========================

一、登录你的jenkins,选择新建任务

Jenkins git maven window 自动化部署 jenkins实现自动化部署_服务器_07

 输入一个任务名称-这里是我新建的消息服务,所以命名local-message,下面的两种风格都用过,各有各的好处,现在用流水线搭建一个,推荐流水线。选择确定。

Jenkins git maven window 自动化部署 jenkins实现自动化部署_服务器_08

 二、编写配置了开始,一共是下面的这些配置。直接开始我需要的吧

Jenkins git maven window 自动化部署 jenkins实现自动化部署_1024程序员节_09

 直接使用流水线编写即可(步骤下面讲解,先说大体流程)

Jenkins git maven window 自动化部署 jenkins实现自动化部署_git_10

 如果不知道流水线语法可以使用“流水线语法”来解决。这个流水线我个人认为是从自由风格演变过来的,分模块了而已。

Jenkins git maven window 自动化部署 jenkins实现自动化部署_jenkins_11

 下面讲解步骤

1、我们提交代码到仓库了,使用jenkins的git工具下载下来(git拉取代码)

2、代码已经下载使用jenkins的maven插件工具对代码进行编译(maven构建项目)

3、 编译构建好的jar包或者war包推送到目标服务器,也就是你要在哪台服务器运行(推送项目到目标服务器)

4、使用远程命令进行启动,因为我目标是打算用docker,所以用的镜像命令(构建镜像并启动)

所以整个流水线内容如下,有删改嘻嘻。

当然如果启动有问题还可以编写通知部分等内容,需要自己扩展了

stages {
        stage('git拉取代码') {
            steps {
                echo '开始pull-dev';
                git branch: 'dev', credentialsId: '', url: 'https://xxx.git'
            }
        }
        stage('maven构建项目') {
            steps {
                echo '开始maven构建项目';
                sh '/var/jenkins_home/maven/bin/mvn clean package -Dmaven.test.skip=true'
            }
        }
        stage('推送项目到目标服务器') {
            steps {
               sshPublisher(publishers: [sshPublisherDesc(xxx)])
            }
        }
         stage('构建镜像并启动') {
            steps {
               sshPublisher(publishers: [xxx])                
            }
        }
    }
}

 三、开始构建项目(可以用通知自动构建我这里就手动构建了)

 

Jenkins git maven window 自动化部署 jenkins实现自动化部署_1024程序员节_12

注意:扩展部分

扩展部分:安装public over ssh 插件用于远程推送项目

Jenkins git maven window 自动化部署 jenkins实现自动化部署_git_13

设置ssh server 目标服务器(位置)

Jenkins git maven window 自动化部署 jenkins实现自动化部署_jenkins_14

Jenkins git maven window 自动化部署 jenkins实现自动化部署_推送_15

远程推送文件

注意:source files是相对路径,当前位置在workspace下的一级目录比如gatway

推送文件扩展:

Jenkins git maven window 自动化部署 jenkins实现自动化部署_1024程序员节_16

Jenkins git maven window 自动化部署 jenkins实现自动化部署_服务器_17

Sshover插件使用

该插件主要是通过SSH连接其他Linux机器,远程传输文件及执行Shell命令。

特性:

1、SCP—通过SSH发送文件 
2、在远程服务器执行shell命令 
3、Passwords/passphrases在配置文件及UI界面是加密显示的 
4、SSH可在项目编译前或编译后执行,与是否编译成功无关 

公共配置 
Passphrase:密码(key的密码。如果有设置) 
Path to key:key文件(私钥)的路径 
Key:将私钥复制到这个框中 
Disable exec:禁止运行命令 
注意:一般来说,我们会采用同每一个SSH Server单独配置的方式,因此公共配置部分一般不进行设置

私有配置 
SSH Server Name:标识的名字,可随便取 
HostName:需要连接ssh的主机名或IP地址 
Username:SSH连接所使用的用户名 
Remote Directory:用SSH连接后的远程根目录,这个目录是必须存在的,Jenkins不会自动创建目录。Jenkins会将文件远程复制到该目录。(注意:SSH连接的用户需要有权限才可以创建、删除、移动文件及文件夹) 
Use password authentication, or use a different key:使用密码认证或密钥认证

私有配置的高级 
Port:SSH连接端口号(默认为22) 
Timeout (ms):连接超时的时间,单位以毫秒计算 
Disable exec:禁止exec执行命令 
Test Configuration:测试配置是否成功 

第一种启动步骤:

在构建环境中选择Send files or excute commands over SSH after the build runs 
SSH Server Name:选择系统设置中已添加的SSH服务器 
Transfer Set Source files:需要上传到应用服务器的文件(注意:相对于工作空间的路径,可填写多个,默认用逗号分隔) 
Remove prefix:去掉前缀(只能指定Transfer Set Source files中的目录) 
Remote directory:可选的目标文件夹。如果文件夹不存在,会创建文件夹。 
Exec command:在远程服务器将要执行的命令。在远程SSH传输执行后,才执行这里的脚本命令 
高级选项: 
Exclude files:排除的文件(在传输目录的时较有用,使用通配符,例如:/*.log,/*.tmp,*.txt/) 
Pattern separator:分隔符(配置Transfer Set Source files的分隔符) 
No default excludes:禁止默认的排除规则 
Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。 
Flatten files:只上传文件,不创建目录(除了远程目录) 
Exec timeout (ms):运行脚本的超时时间(毫秒) 
Exec in pty:模拟一个终端执行脚本 
Add Transfer Set:增加一个传输配置 
Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式),具体格式参考下表:

Remote directory

Directories created

‘qa-approved/’yyyyMMddHHmmss

qa-approved/20101107154555

‘builds/’yyyy/MM/dd/’build-${BUILD_NUMBER}’

builds/2010/11/07/build-456 (if the build was number 456)

yyyy_MM/’build’-EEE-d-HHmmss

2010_11/build-Sun-7-154555

yyyy-MM-dd_HH-mm-ss

2010-11-07_15-45-55

第二种启动步骤:在构建后操作中,选择Send build artifacts over SSH

注:Transfer Set Source files和Exec command可只填写一个