Jenkins安装
Jenkins windows 和 liunx的安装自行百度!简单的很 下一步下一步就行了
安装插件
下面介绍实际部署中所用到的几个插件,安装方法:系统管理->管理插件 搜索安装即可。
- 安装Deploy to container Plugin(自动化部署插件)
- 安装Maven Integration Plugin(Maven集成插件)
- 安装Publish Over SSH Plugin(SSH远程发布插件)
Publish over SSH配置
Maven配置
主要就是发布配置详情:
点击新建任务 选择
创建完成之后进行任务配置
我这里是使用SVN 进行代码托管,如果你们使用git的选择git即可,在使用SVN之前需要先安装Svn插件,完成之后方可进行配置,在配置svn的时候用户、密码会报个错,但是我这里没有进行解决直接连接即可,假如你们遇到Svn相关的错误,自行百度即可!
配置服务器
1.我在下面选择的是我们之前配置的服务器,Exec command 实在编译之前进行操作,我这里是公司需要进行编译之前备份操作
Build 操作:
1.Root pom 选择pom.xml 表示使用maven 的pom.xml 进行编译
2.Goals and options 是编译命令:
-P test 表示maven项目中使用的是test环境,因为我的项目中配置了 prd dev test 三个环境
项目中相关配置
配置文件:
//使用这种方式的时候<profiles> 是配置多个环境
activation 为true表示项目默认使用的配置文件
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<profiles>
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
<profile>
<id>prd</id>
<properties>
<profileActive>prd</profileActive>
</properties>
</profile>
</profiles>
如果项目中启动出现如下报错,其实他就是不认识yml配置文件中的@符号
found character '@' that cannot start any token. (Do not use @ for indentation) in 'reader', line 5
解决办法 加上''即可
还需要添加个插件:
添加插件的目的是因为我在配置文件中使用的是 @profileActive@
spring:
application:
name: xxx-ssh
profiles:
active: '@profileActive@'
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<delimiters>@</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
</build>
构建完成后操作
具体命令,可以自行百度,我这里只提供项目中使用到的
#!/bin/bash
PID=`lsof -i:8081| grep LISTEN |awk '{print $2}'` //获取端口号8081的线程pid
echo ${PID}
export BUILD_ID=dontKillMe
if [[ $PID -ge 0 ]];then
kill -9 $PID
fi
//执行启动
nohup java -jar /usr/local/test/test-SNAPSHOT.jar > /usr/local/test/testlogs.log 2>&1 &