Jenkins的安装, 配置, 以及Maven项目自动部署示例

一. Jenkins官网

https://jenkins.io

二. Windows安装Jenkins

1. 下载msi文件并安装

msi下载路径: https://jenkins.io/content/thank-you-downloading-windows-installer/

2. 访问页面

安装后程序会自动创建了一个Windows服务, Jenkins默认使用的端口是8080, 在浏览器中输入地址: http://127.0.0.1:8080.

3. 更改端口号

方式一. (此方式是命令行启动Jenkins)
在Jenkins根目录执行如下命令启动服务:

java -jar jenkins.war --httpPort=8081

方式二. (此方式是通过Windows服务启动Jenkins)
在Jenkins根目录下的jenkins.xml中搜索httpPort, 将其后面默认的8080改为要设置的端口号, 改好后重新启动Jenkins的Windows服务.

4. 根据提示输入密钥并安装所需要的插件, 如果不知道需要哪些插件, 安装标准配置插件即可.

三. Docker安装Jenkins

version: "3.5"

services:
 jenkins:
  image: jenkins:2.60.3
  restart: always
  container_name: jenkins
  ports:
   - "8080:8080"
  volumes:
   - type: bind
     source: /home/paul/docker/myvolume/jenkins/home
     target: /var/jenkins_home

四. Jenkins配置用户权限

1. 点击左侧的Manage Jenkins --> Configure Global Security, 选择Enable security, Jenkins’ own user database, Allow users to sign up, Matrix-based security, 在Anonymous Users这一行全部打钩, 点击保存.

Jenkins的安装, 配置, 以及Maven项目自动部署示例

2. 退出登录, 注册新账户, 然后用新账户登录, 同样点开上一步页面, 取消Allow users to sign up, 取消Anonymous Users这一行的打钩, 在User/group to add这里填写新注册的账户, 点击Add, 在paul这一行全部打钩, 点击保存.

Jenkins的安装, 配置, 以及Maven项目自动部署示例

3. 新建的paul用户拥有所有的权限, 可以根据需要更改权限, 并且设置后Jenkins不允许注册新账号

五. Jenkins汉化

1. 个人建议: 各种软件, 官网, 文档等尽量不汉化, 看不懂的去查去学, 毕竟翻译过来的可能会错误理解原意.

2. 使用中文版的Google浏览器, 并把语言设置成了中文. 语言配置在设置页.

Jenkins的安装, 配置, 以及Maven项目自动部署示例

3. 安装插件: Manage Jenkins --> Manage Plugins 选中Avaliable这一栏, 在右侧搜索: Locale, 选择Install without restart安装

Jenkins的安装, 配置, 以及Maven项目自动部署示例

4. 出现success表示安装成功

Jenkins的安装, 配置, 以及Maven项目自动部署示例

5. 安装插件: Manage Jenkins --> Configure System, 找到Locale, 填写zh_CN, 并在Ignore browser...这一项打钩, 保存.

Jenkins的安装, 配置, 以及Maven项目自动部署示例

六. Jenkins自动部署Maven项目

1. 在安装了基本配置的那些插件后, 需要再安装两个插件:

Maven Integration plugin
Publish Over SSH

2. 配置JDK, Maven, Git

(1) Manage Jenkins --> Global Tool Configuration

Jenkins的安装, 配置, 以及Maven项目自动部署示例

(2) 设置本地JDK的安装路径(若不使用本地已有的JDK, 可选中Install automatically, Jenkins会自动安装)

Jenkins的安装, 配置, 以及Maven项目自动部署示例

(3) 设置本地Maven的安装路径(若不使用本地已有的Maven, 可选中Install automatically, Jenkins会自动安装)

Jenkins的安装, 配置, 以及Maven项目自动部署示例

(4) 设置Maven自定义配置文件的路径

Jenkins的安装, 配置, 以及Maven项目自动部署示例

(5) 设置本地Git的exe路径(若不使用本地已有的Git, 可选中Install automatically, Jenkins会自动安装)

Jenkins的安装, 配置, 以及Maven项目自动部署示例

3. 配置SSH

Manage Jenkins --> Configure System 在页面中找到Publish over SSH, 点击Add按钮, 然后点击Advanced...按钮并在Use password authentication, or use a different key前面打钩, 填写如下内容:
Jenkins的安装, 配置, 以及Maven项目自动部署示例
<1>name: SSH连接的名称

<2>Hostname: 远程服务器IP

<3>Username: 远程服务器用户名

<4>Remote Directory: 这个是相对于远程服务器的路径, 具体项目中的SSH配置还需要填写Source files, Remote Directory, Remove prefix这三项, Jenkins会通过这几个配置得出最终文件上传后远程服务器中文件的路径. 参考第5(5)<4>步.

<5>Passphrase/Password: 远程服务器密码

<6>Path to key: 远程服务器SSH秘钥路径

<7>Port: 远程服务器SSH连接端口号

4. 新建Maven项目

(1) New Item

Jenkins的安装, 配置, 以及Maven项目自动部署示例

(2) 选择Maven Project, 填写Jenkins项目名称, 点击OK

Jenkins的安装, 配置, 以及Maven项目自动部署示例

5. 项目配置说明

(1) Description: 项目描述
(2) Source Code Management: 配置代码管理

<1> 使用Git
Jenkins的安装, 配置, 以及Maven项目自动部署示例
填写URL, 用户名, 密码, 分支, Jenkins会在安装目录下的workspace目录下一个文件夹, 文件夹名称为当前Jenkins项目的名称, 这个文件夹下存放所有下载的代码.

<2> 使用SVN
Jenkins的安装, 配置, 以及Maven项目自动部署示例
Local module directory: 用来指定代码存放路径, 这个与Git有所区别, 若不填, 则存放位置与Git类似, 若填写, 则为默认路径的相对路径. 例如: Jenkins安装目录为: C:/Program Files (x86)/Jenkins, 当前Jenkins项目名称为blogs, Local module directory为: all, 则最终代码存放路径为: C:/Program Files (x86)/Jenkins/workspace/blogs/all

(3) 自动部署触发器

Jenkins的安装, 配置, 以及Maven项目自动部署示例
<1> 可以不设置, 每次手动点击按钮进行一键部署

<2> 可以在上面的各种情况下设置部署, 上图选择的是通过Poll SCM定时部署, H/24 代表每24小时部署一次, 下面还会显示上一次部署时间和下一次部署时间.

<3> 也可以通过安装如Github plugin等插件实现每次版本控制器有代码提交, 就自动部署, 但正式环境不建议这么干.

(4) 配置pom文件路径与Maven执行命令(Root POM也可以是相对路径)

Jenkins的安装, 配置, 以及Maven项目自动部署示例

(5) 通过SSH上传文件至远程服务器并执行备份等操作

在Post-build Actions的下拉框中选择Send build artifacts over SSH
Jenkins的安装, 配置, 以及Maven项目自动部署示例
SSHServer的配置如下:
Jenkins的安装, 配置, 以及Maven项目自动部署示例
<1>Name: 下拉框选择第3步配置的SSH服务器

<2>Source files: 指定需要上传到远程服务器的文件相对路径(相对于代码存放路径), 例如: 代码存放路径为: C:/Program Files (x86)/Jenkins/workspace/all, Source files为: oa_jinnan/target/oa_jinnan.war, 则上传前文件的最终路径为: C:/Program Files (x86)/Jenkins/workspace/all/oa_jinnan/target/oa_jinnan.war.

<3> Remote directory: 参考第5(5)<4>步.

<4>Remove prefix: 需要移除的目录前缀, 如果设置了此项属性, 则Source files必须以这个目录前缀开头.

举例说明该属性的作用, 假设配置如下:

系统中SSH配置的Remote directory为: /usr/local/test
当前Jenkins项目SSH配置的Source files为: oa_jinnan/target/oa_jinnan.war
当前Jenkins项目SSH配置的Remove prefix为: oa_jinnan/target
当前Jenkins项目SSH配置的Remote directory为: ../projects/blogs
则最终文件上传后远程服务器中文件的路径为: /usr/local/projects/blogs/oa_jinnan.war.

如果不配置当前Jenkins项目SSH配置的Remove prefix, 则最终文件上传后远程服务器中文件的路径为: /usr/local/projects/blogs/oa_jinnan/target/oa_jinnan.war

<5>Exec command: 文件上传后, 远程服务器要执行的命令

export DATE=$(date "+%Y%m%d_%H%M%S")
sleep 5
cp -rf /usr/local/tomcat/webapps/ROOT /usr/local/bak/oa_$DATE
sh /usr/local/tomcat/bin/shutdown.sh
netstat -apn |grep java |awk '{print $7}' |xargs |awk -F '/' '{print $1}' |xargs kill -9
rm -rf /usr/local/tomcat/webapps/ROOT
cp -rf /usr/local/tomcat/webapps/oa_jinnan/* /usr/local/tomcat/webapps/ROOT
rm -rf /usr/local/tomcat/webapps/oa_jinnan.war /usr/local/tomcat/webapps/oa_jinnan
sh /usr/local/tomcat/bin/startup.sh

可以不用重启Tomcat, 因为Tomcat会自动解压缩, 视需要而定.
export DATE=$(date "+%Y%m%d_%H%M%S")这一句是用来给备份文件添加年月日时分秒的后缀
备份也可以在文件上传之前执行, 在Pre Steps的下拉框中选择Send files or execute commands Over SSH, 配置方法与上面相同.
netstat -apn |grep java |awk '{print $7}' |xargs |awk -F '/' '{print $1}' |xargs kill -9这一句代表查出java进程的PID, 然后kill掉.

上一篇:NPOI将xls文件解析为DataTable类数据


下一篇:[C++程序设计]对“&”和“*”运算符