硬件需求

一台windows系统,安装在windows上的jenkins应用,安装centos7(时区选上海)的虚拟机,上传到centos7上的tomcat

1.centos7

1.1.预处理

#关闭防火墙来开发端口
systemctl stop firewalld
systemctl disable firewalld

#同步上海时间
yum install ntpdate
ntpdate ntp1.aliyun.com

1.2.安装subversion

yum -y install subversion
mkdir -p /svn/
svnadmin create /svn/project
cd /svn/project/conf
vi svnserve.conf
  anon-access = none
  auth-access = write
  password-db = passwd
  authz-db = authz
  realm = /svn
vi passwd
  root = 123456
vi authz
  [/]
  root = rw
svnserve -d -r /svn

jenkins(2.222.1)+maven(3.63)持续继承20200424

jenkins(2.222.1)+maven(3.63)持续继承20200424

jenkins(2.222.1)+maven(3.63)持续继承20200424

svn地址 svn://192.168.182.132:3690/project
在windows里安装TortoiseSVN,在E盘导出project目录
将maven项目拷贝到 E:/project下并提交

jenkins(2.222.1)+maven(3.63)持续继承20200424

如果maven项目是springboot的maven项目,需要
a.启动类继承SpringBootServletInitializer。
@SpringBootApplication
public class App extends SpringBootServletInitializer {
  public static void main(String[] args) throws Exception {
    SpringApplication.run(App.class, args);
  }

  protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(App.class);
  }

}
b.修改pom.xml,packaging中改为war并增加依赖
<packaging>war</packaging>

<!-- tomcat相关jar包用外部的 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <scope>provided</scope>
</dependency>

2.tomcat

#上传tomcat并解压
cd /root/apache-tomcat-8.5.54
#设置jdk和jre
vi bin/catalina.sh
export JAVA_HOME=/usr/local/jdk1.8.0_251
export JRE_HOME=/usr/local/jdk1.8.0_251/jre

jenkins(2.222.1)+maven(3.63)持续继承20200424

3.jenkins

winsow上安装jenkins,等出现登录页面时去修改文件 updates/default.json
替换 updates.jenkins-ci.org/download 为 mirrors.tuna.tsinghua.edu.cn/jenkins
替换 www.google.com 为 www.baidu.com
然后重启jenkins服务。
用默认密码登录,安装默认插件后,设置登录账号,进入操作界面
修改目录下 jenkins.xml 的8080 端口为8081,再次重启jenkins服务
用账号登录http://localhost:8081/,进入操作界面。

jenkins(2.222.1)+maven(3.63)持续继承20200424

jenkins(2.222.1)+maven(3.63)持续继承20200424

b.系统管理 - 全局工具配置
jdk D:\Program\Java\jdk1.8.0_251
maven D:\Program\apache-maven-3.6.3

jenkins(2.222.1)+maven(3.63)持续继承20200424

c.系统管理 - 系统配置
全局MAVEN_OPTS        -Dmaven.repo.local=C:\Users\chenwq\.m2\repository
SSH Servers 点击新增
Name                                  任意
Hostname           192.168.182.132    主机名
Username           root               登录名
Remote Directory   /                  登录目录
勾选 Use password authentication, or use a different key
Passphrase / Password                 登录密码

jenkins(2.222.1)+maven(3.63)持续继承20200424

d.构建

构建一个maven项目
源码管理
选中Subversion
svn://192.168.182.132/project/myProject2
并认证

jenkins(2.222.1)+maven(3.63)持续继承20200424
e.构建触发器
轮询 SCM
  日程表                 * * * * *           每分钟去svn中检查,有更新就构建部署
f.Pre Steps
Build
  RootPOM               pom.xml
  Goals and options     clean install -Dmaven.test.skip=true -Ptest

g.构建后操作
选择 Send build artifacts over SSH
Name              任意
Source files      target/myProject2.war
Remove prefix     target
Remote directory  war
Exec command      ~/deploy.sh myProject2 8080 /root/apache-tomcat-8.5.54

其中deploy.sh需要上传到/root目录下,内容在下面
#权限处理
cd /root
chmod 777 *.sh
#解决文件格式问题
vi /root/deploy.sh
:set fileformat=unix
:wq

#deploy.sh内容
#!/usr/bin/bash
#默认变量值
TOMCAT_HOME="/root/apache-tomcat-8.5.54"
TOMCAT_PORT=8080
PROJECT="myProject2"
#参数检验./deploy.sh <projectname> [tomcat port] [tomcat home dir]
if [ $# -lt 1 ]; then
  echo "you must use like this : ./deploy.sh <projectname> [tomcat port] [tomcat home dir]"
  exit
fi
if [ ! -n "$2" ]; then
   TOMCAT_PORT=$2
fi
if [ ! -n "$3" ]; then
   TOMCAT_HOME="$3"
fi

#根据端口查找tomcatpid,可能有多个,循环中判断
tomcat_pid=`netstat -anp | grep $TOMCAT_PORT | awk '{printf $7}' | cut -d "/" -f 1`
echo "current :" $tomcat_pid
while [ -n "$tomcat_pid" ]
do
 sleep 5
 #进一步筛选
 tomcat_pid=`ps -ef | grep $tomcat_pid |grep $TOMCAT_HOME | grep -v 'grep\|tail\|more\|bash\|less'| awk '{print $2}'`
 echo "scan tomcat pid :" $tomcat_pid
 if [ -n "$tomcat_pid" ]; then
   echo "kill tomcat :" $tomcat_pid
   kill -9 $tomcat_pid
 fi
done

#备份
BAK_DIR=$HOME/war/bak/$PROJECT/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war

#publish project
echo "scan no tomcat pid,$PROJECT publishing"
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT.war
cp /war/$PROJECT.war "$TOMCAT_HOME"/webapps/$PROJECT.war

#remove tmp
rm -rf /war/$PROJECT.war
#start tomcat
"$TOMCAT_HOME"/bin/startup.sh
echo "tomcat is starting,please try to access $PROJECT conslone url"

 

 

相关文章:

  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2021-07-04
  • 2022-12-23
  • 2021-10-11
  • 2021-05-17
  • 2021-04-17
猜你喜欢
  • 2021-05-15
  • 2021-06-19
  • 2021-08-23
  • 2021-11-16
  • 2022-02-08
  • 2021-08-07
  • 2021-10-20
相关资源
相似解决方案