一、准备环境介绍

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. 线上可用django和gunicorn的dockerfile内容

    一,基础镜像 [xxx.com.cn/3rd_part/python.3.6.8:alpine3.9-mysqlclient1.4.2] FROM python:3.6.8-alpine3.7 MAI ...

  2. [C10] 异常检测(Anomaly Detection)

    异常检测(Anomaly Detection) 问题的动机 (Problem Motivation) 异常检测(Anomaly detection)问题是机器学习算法中的一个常见应用.这种算法的有趣之 ...

  3. oracle用户管理, 授权与回收权限

    一. 用户管理参数, 0.删除用户: drop user 用户名 [cascade] 当我们删除用户时, 如改用户已创建过数据对象, 那么删除用户时必须加cascade参数, 用来同步删除 改用户的所 ...

  4. polyfll方案优化

    polyfill 在es6风靡的时候,babel给了我们一个有力的转换方案,可以在低版本浏览器上写一些新语法而不用考虑兼容问题 polyfill的诞生 语法和API区分 语法是用来产生特殊效果的一些符 ...

  5. Paper | FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising

    目录 故事背景 核心思想 FFDNet 网络设置 噪声水平图 对子图像的去噪 保证噪声水平图的有效性 如何盲处理 为啥不用短连接 裁剪像素范围 实验 关于噪声水平图的敏感性 盲处理 发表在2018 T ...

  6. sqlplus简单使用

    登录 C:\Users\inmeditation>sqlplus 请输入用户名: scott 输入口令: 查看当前行长 SQL> show linesize; linesize 80 查看 ...

  7. SQL Server 判断各种对象是否存在和sysobjects的关系

    一.判断表是否存在 object_id():获取表的ID,其中N表示Unicode类型.可以支持不同语种的对象名 ) drop table [dbo].[表名] 二.判断要创建的存储过程名是否存在 ) ...

  8. Neo4j 第十二篇:使用Python驱动访问Neo4j

    neo4j官方驱动支持Python语言,驱动程序主要包含Driver类型和Session类型.Driver对象包含Neo4j数据库的详细信息,包括主机url.安全验证等配置,还管理着连接池(Conne ...

  9. sysstat工具包之mpstat

    mpstat 1 简介 mpstat是一个实时监控工具,主要报告与CPU相关统计信息,信息存放在/proc/stat文件中: 在多核心cpu系统中,不仅可以查看cpu平均信息,还可以查看指定cpu信息 ...

  10. 使用NumPy、Numba的简单使用(二)

    本来要写NLP第三课动态规划的,日了,写到一半发现自己也不会了,理论很简单,动态规划咋回事也知道,但是实现在源码上还是有点难度,现在简单给予题目描述,小伙伴也可以来思考一下,例题一,我们现在有1元硬币 ...