背景:本地测试服务器每次需要打包,发布,部署太麻烦,整一个jenkins自动化部署,因为之前做过一次,然后新做了一个短信平台的微服务,突然之间忘了怎么做了,所以才想起来整理一下。
前提:下载安装jenkins并配置相关内容maven和git(可以使用docker安装或者war包安装等等)
笔记:笔者也是之前学习了大量的前辈们总结的教程,然后根据自己的业务整理出自己的,笔记如下
好了回顾完了。开始整理吧。
===================正文如下========================
一、登录你的jenkins,选择新建任务
输入一个任务名称-这里是我新建的消息服务,所以命名local-message,下面的两种风格都用过,各有各的好处,现在用流水线搭建一个,推荐流水线。选择确定。
二、编写配置了开始,一共是下面的这些配置。直接开始我需要的吧
直接使用流水线编写即可(步骤下面讲解,先说大体流程)
如果不知道流水线语法可以使用“流水线语法”来解决。这个流水线我个人认为是从自由风格演变过来的,分模块了而已。
下面讲解步骤
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])
}
}
}
}
三、开始构建项目(可以用通知自动构建我这里就手动构建了)
注意:扩展部分
扩展部分:安装public over ssh 插件用于远程推送项目
设置ssh server 目标服务器(位置)
远程推送文件
注意:source files是相对路径,当前位置在workspace下的一级目录比如gatway
推送文件扩展:
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可只填写一个