jenkins运行流程:
1、从SVN拉取代码到 jenkins
2、运行maven命令clean install,将项目打 jar (war)包
3、执行shell 脚本,启动项目
下图是我们的项目
两部分:红色是需要运行的项目、绿色是基础项目不需要运行(只需deploy到maven仓库即可)
jenkins下载:http://mirrors.jenkins.io/war-stable/
1、修改tomcat 字符编码
vi jenkins-tomcat/conf/server.xml
将下载的 jenkins.war 放到 tomcat,启动,插件默认安装即可
2、系统设置,配置jdk maven
先同步下系统时间
1.删除自带的 localtime
rm -rf /etc/localtime
2.创建软链接到 localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
yum install -y ntpdate
ntpdate ntp1.aliyun.com
3、安装插件
安装完成重启jenkins : http://192.168.33.12:8088/jenkins/restart
4、新建项目
添加maven命令,也就是对源码进行打包,clean install -Dmaven.test.skip=true
5、构建项目
构建完的项目地址在 /root/.jenkins/workspace/xxxxx/target
6、编写shell脚本,启动构建好的jar
首先在系统设置里配置一下publish over ssh ,这里的地址就是我们即将部署的机器,因为jenkins很可能和部署的机器不是一台
注意 Remote Directory参数代表用户的根目录
保存,继续配置项目
选择我们刚才配置的机器,参数解释
Source files:jenkins打完包的地址,参考第5步,从target开始写
Remove prefix:前缀写target,标识从那个文件夹开始
Remote directory:要拷贝到的远程服务器,不需要写用户根目录,比如/usr/local/apps/xxx 只需写apps/xxx即可
Exec command:执行的脚本地址,就是启动项目脚本,内容如下
#!/bin/sh
## java env
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
## service name
APP_NAME=eureka
SERVICE_DIR=/usr/local/apps/$APP_NAME
SERVICE_NAME=com.jk.cloud.$APP_NAME-0.0.1-SNAPSHOT
JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid
cd $SERVICE_DIR
case "$1" in
start)
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >log.out 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
sleep 10
cat -fn3000 log.out
;;
stop)
kill `cat $SERVICE_DIR/$PID`
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME"
sleep 5
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi
;;
restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;;
*)
## restart
$0 stop
sleep 2
$0 start
;;
esac
exit 0
保存,再次构建,大功告成!!!
遇到的问题:
在基础项目打包的时候需要修改pom.xml的打包方式,打成普通jar即可
nexus-releases
http://10.90.189.109:8081/nexus/content/repositories/releases
nexus-snapshots
http://10.90.189.109:8081/nexus/content/repositories/snapshots
org.apache.maven.plugins
maven-deploy-plugin
false
org.apache.maven.plugins
maven-eclipse-plugin
org.apache.maven.plugins
maven-compiler-plugin
true
true
true
-nowarn
1.8
UTF-8
org.apache.maven.plugins
maven-source-plugin
attach-sources
jar
而需要启动的springcloud项目,则使用springboot 自带的打包插件
${basedir}/src/main/webapp
META-INF/resources
**/**
${basedir}/src/main/resources
**/**
org.springframework.boot
spring-boot-maven-plugin