一、准备环境介绍

192.168.5.71     # gitlab 仓库IP
192.168.5.72 # 开发环境,用于提交代码等
192.168.5.73 # tomcat 部署solo服务站点
192.168.5.239 # jenkins 服务器

二、在WEB机器(73)上面部署tomcat + maven环境

2.1 安装JDK,jenkins中添加slave节点需要

# tar xf jdk-8u111-linux-x64.tar.gz -C /usr/local/
# ln -s /usr/local/jdk1..0_111 /usr/local/jdk
# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

2.2 安装maven环境,打war包的时候需要

# wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
# tar xf apache-maven-3.5.-bin.tar.gz -C /usr/local/
# ln -s /usr/local/apache-maven-3.5./ /usr/local/maven

2.3 安装tomcat环境

# tar xf apache-tomcat-8.5..tar.gz -C /usr/local/
# ln -s /usr/local/apache-tomcat-8.5. /usr/local/tomcat
# cd /usr/local/tomcat/webapps/
# rm -rf *

2.4 创建备份目录

# mkdir -p /data/backup

2.5 对git服务器进行免密认证

# ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
# ssh-copy-id -i /root/.ssh/id_dsa.pub git@192.168.5.71

2.6 安装unzip解压war包命令,也可以不安装,1.8会热解压,安装mariadb数据库,将数据库密码设置为123456,并创建solo数据库

# yum install unzip mariadb-server mariadb -y
# mysqladmin -uroot password ''
# mysql -uroot -p123456
MariaDB [(none)]> create database solo;

数据库密码也可以修改solo v3.6.6源码包,具体目录如下

# vim solo/src/main/resources/local.properties
#### MySQL runtime ####
runtimeDatabase=MYSQL
jdbc.username=root
jdbc.password=
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.URL=jdbc:mysql://localhost:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC

三、在git服务器(71)上面创建solo仓库

# su - git
$ mkdir repo/solo
$ cd repo/solo/
$ git --bare init
Initialized empty Git repository in /home/git/repo/solo/

git仓库已创建好,仓库地址是:git@192.168.5.71:/home/git/repo/solo

四、在开发机下载solo 3.6.6版本并上传到git仓库

# git clone git@192.168.5.71:/home/git/repo/solo
# wget https://codeload.github.com/b3log/solo/tar.gz/v3.6.6
# tar xf v3.6.6
# mv solo-3.6./* solo/
# cd solo/ # 修改solo配置文件
# grep server src/main/resources/latke.properties
serverScheme=http
serverHost=solo.leon.com
serverPort=8080 # 上传代码
# git add .
# git commit -m 'all solo file'
# git push origin master

五、开发机编写jenkinsfile文件

# git clone git@192.168.5.71:/home/git/repo/jenkinsfile
# cd jenkinsfile/
# mkdir java-solo
# cd java-solo/

jenkinsfile文件如下:

tomcat发布项目要重启服务

node ("192.168.5.73") {
//def mvnHome = '/usr/local/maven'
stage('git checkout') {
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ccf5f140-9a28-49d6-abc8-40bc6c750323', url: 'git@192.168.5.71:/home/git/repo/solo']]])
}
stage('maven build') {
sh '''export JAVA_HOME=/usr/local/jdk
/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true'''
}
stage('deploy') {
sh '''
JENKINS_NODE_COOKIE=dontkillme
export JAVA_HOME=/usr/local/jdk
TOMCAT_NAME=tomcat
TOMCAT_HOME=/usr/local/$TOMCAT_NAME
WWWROOT=$TOMCAT_HOME/webapps/ROOT if [ -d $WWWROOT ]; then
mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")
fi
unzip ${WORKSPACE}/target/*.war -d $WWWROOT
PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\')
[ -n "$PID" ] && kill -9 $PID
/bin/bash $TOMCAT_HOME/bin/startup.sh'''
}
}

# cat jenkinsfile/java-solo/jenkinsfile

push代码:

# cd jenkinsfile/
# git add .
# git commit -m 'add java-solo jenkinsfile'
# git push origin master

六、配置Jenkins

6.1 添加slave机器

从节点配置信息

 6.2 创建一个solo-java的pipeline配置如下

 6.3 进行构建

七、如果遇到的坑

7.1 jenkins启动服务器自动关闭

原因:pipeline启动的tomcat进程是jenkins派生的,当job完成之后jenkins会自动关闭自己派生的进程。所以tomcat会被关闭。在jenkinsfile中加入此行内容。

JENKINS_NODE_COOKIE=dontkillme

7.2 solo没有皮肤的导致tomcat启动失败

[ERROR]-[-- ::]-[org.b3log.latke.Latkes:]: Read skin [Pinghsu]'s configuration failed: null
[ERROR]-[-- ::]-[org.b3log.solo.SoloServletListener:]: Can't load the default skins, please make sure skin [Pinghsu] is under skins directory and structure correctly

经查看此目录是空的

# ls solo-3.6./src/main/webapp/skins/

解决方法:下载新的solo源码包,将其skins目录的文件拷贝到上面的目录即可

# cp -r solo/src/main/resources/skins/ solo-3.6.6/src/main/webapp/skins/

Jenkins + Pipeline + Git + Maven (十)的更多相关文章

  1. [原]Jenkins(二)---jenkins之Git+maven+jdk+tomcat

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5331 ...

  2. Jenkins Jenkins结合GIT Maven持续集成环境配置

    Jenkins结合GIT Maven持续集成环境配置   by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...

  3. Jenkins(二)---jenkins之Git+maven+jdk+tomcat

    git+maven+jdk+tomcat  这四个软件可以百度在linux下的安装,不再赘述. server A --->   jenkins主机ip:192.168.100.119 serve ...

  4. Jenkins + pipeline + Git + PHP (九)

    一.准备环境介绍 192.168.5.71 # gitlab 仓库IP 192.168.5.72 # 开发环境,用于提交代码等 192.168.5.150 # www.leon.com 运行wordp ...

  5. 使用Jenkins配置Git+Maven的自动化构建

    Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便. 在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服务器 ...

  6. ZZ 使用Jenkins配置Git+Maven的自动化构建

    http://blog.csdn.net/xlgen157387/article/details/50353317 Jenkins是帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布 ...

  7. 创建自动化环境(jenkins+tomcat+git+maven,java)

    1.安装jdk 下载1.8以上jdk // 切换到lib cd /usr/lib sudo mkdir jdk cd jdk // 将 jdk拷贝到此目录 // 解压jdk tar -zxvf jdk ...

  8. [CentOS]使用Jenkins配置Git+Maven的自动化构建

    背景 最近安装Jenkins,参照网上的各种资料进行尝试,折腾了好久,但是查找了这么多资料,相似度在90%以上!!!,相同的安装过程,测试了几台机器,未曾成功,不得不感慨自己能力有限,最终慢慢摸索,形 ...

  9. jenkins配置git+maven+Publish over SSH

    一.配置git 1.新建项目,源码管理选择git 2.Repository URL输入git目录 3.Credentials中选择新增凭据,凭据类型选择SSH,usename输入git,passphr ...

随机推荐

  1. LInkHashMap源码分析

    说LinkHashMap之前,我们先来谈谈什么是LRU算法? 按照英文的直接原义就是Least Recently Used,最近最久未使用法,它是按照一个非常注明的计算机操作系统基础理论得来的:最近使 ...

  2. 30.Java基础_接口_抽象类_具体类实现案例

    public interface SpeakEnglish { public abstract void speak(); } public abstract class Person { priva ...

  3. G1 垃圾收集器架构和如何做到可预测的停顿(阿里)

    CMS垃圾回收机制 参考:图解 CMS 垃圾回收机制原理,-阿里面试题 CMS与G1的区别 参考:CMS收集器和G1收集器优缺点 写这篇文章是基于阿里面试官的一个问题:众所周期,G1跟其他的垃圾回收算 ...

  4. LG2375/LOJ2246 「NOI2014」动物园 KMP改造

    问题描述 LG2375 LOJ2246 题解 看了题解,需要回看,需要继续通过本题深入理解KMP. 为了将 \(\mathrm{KMP}\) 和只插入了一个模式串的\(\mathrm{AC}\)自动机 ...

  5. LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈

    问题描述 LG4824 题解 大概需要回顾(看了题解) KMP 先对要删除的 模式串 进行自我匹配,求出 \(\mathrm{fail}\) 然后再扫 文本串 的过程中记录一下每个字符匹配的最大长度, ...

  6. Redis系列1——概述

    1. 简介 Redis,key-value内存存储的数据库,全称“”Remote Dictionary Service(Sever)“”,默认端口号:6379 Redis是一个开源的使用ANSI C语 ...

  7. prisma反向代理

    概要 为什么要做 prisma 的反向代理 反向代理示例(by golang) prisma 服务 gateway 服务 整体流程 认证 反向代理 权限 总结 概要 接触 prisma 有段时间了, ...

  8. vue项目打包之后样式错乱问题,如何处理

    最近公司做的这个项目,要大量修改element里面的css样式,所以项目打包之后 会出现样式和本地开发的时候样式有很多不一样,原因可能是css加载顺序有问题,样式被覆改了. 所以在mian.js里面这 ...

  9. 【前端知识体系-JS相关】ES6专题系列总结

    1.如何搭建ES6的webpack开发环境? 安装Node环境 node -v // 10.14.1 安装NPM环境 npm -v // 6.4.1 安装babel npm install @babe ...

  10. EasyUIDataGrid列标题换行显示

    有时候表格标题字数太多,而宽度有限,就会导致一部分列的标题显示不出来 这时候,加入如下css代码即可将标题换行显示 .datagrid-header-row .datagrid-cell span { ...