使用Jenkins自动部署
支持GIT/MAVEN/NODEJS
网络访问能力支持
配置服务器代理设置到系统配置文件(以下IP均为演示的假IP及端口)
sudo vi /etc/profile
http_proxy=10.34.43.44:8088
https_proxy=10.34.43.44:8088
ftp_proxy=10.34.43.44:8088
export http_proxy
export https_proxy
export ftp_proxy
export PATH=$PATH:/usr/local/bin
source /etc/profile
安装Jenkins
-
准备
cat /proc/version
确定服务器版本,以便安装正确的软件 -
安装
sudo rpm -ih jenkins-2.156-1.1.noarch.rpm -
目录结构
/etc/init.d/jenkins 启动文件
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件
/var/cache/jenkins/ 缓存目录 -
启动
sudo service jenkins start
报错:
Starting jenkins (via systemctl): Job for jenkins.service failed because the control process exited with error code
解决:
找到JDK安装目录 例如: /xxx/xxx/java/jdk1.8.0_162
修改启动脚本
sudo vi /etc/init.d/jenkins
添加"/xxx/xxx/java/jdk1.8.0_162/bin/java" 到 candidates 【例子】
立即生效
source /etc/init.d/jenkins
报错:
Warning: jenkins.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.
解决:
sudo vi /etc/sysconfig/jenkins
修改JENKINS_USER=“当前登入linux的账号”
systemctl daemon-reload
若 sudo service jenkins start 无法启动,
则 用 java -jar jenkins.war --httpPort=8080 > file.log > 2>&1 & 进行启动
安装Jenkins Plugins
请搜索如下基础插件:以便支持命令,GIT,MAVEN,邮箱
Build Timeout
Email Extension
Pipeline
Workspace Cleanup
Timestamper
GitHub Branch Source
安装Git
sudo yum install git
whereis git
git: /usr/bin/git /usr/share/man/man1/git.1.gz
git --version
Jenkins中用户名密码连接git仓库请使用IP
安装Maven
解压
tar -zxvf 文件.tar.gz
配置环境变量
sudo vi /etc/profile
内容
export MAVEN_HOME= 安装路径
export MAVEN_HOME
export PATH=
P
A
T
H
:
PATH:
PATH:MAVEN_HOME/bin
生效
source /etc/profile
验证
mvn -version
为maven增加taobao镜像 和 http代理
安装Nodejs
补充:目前可以直接使用 tar xvJf ***.tar.xz来解压
配置环境变量
sudo vi /etc/profile
PATH=/xxx/nodexx/bin:$PATH
source /etc/profile
验证
node -v
npm -v
编译vue程序
到web project下执行 npm install
问题:
[…] / rollbackFailedOptional: verb npm-session c6c050d7f30fff3d
解决:设置代理
npm config set proxy http://xxxxx:port
npm config set https-proxy http://xxxxx:port
问题:
有可能出现版本问题
解决:则结合linux gcc版本重装
问题
不能访问外网
解决:设置淘宝仓库
npm set registry=https://registry.npm.taobao.org
Shell脚本(java服务)
cd $WORKSPACE/xxxxx
mvn clean install -Pstage
echo "delete old jar"
rm -f /app/apps/xxxx.jar
jarfile=xxxx.jar
echo "copy new jar"
cp -f $WORKSPACE/xxxx/xxxx/target/$jarfile /xxx/xxx
cd /xxx/xxx
echo "stop.."
pid=`ps -ef | grep $jarfile | grep -v grep | awk '{print $2}'`
if [ "$pid" = "" ]
then
echo "no pid alive!"
else
echo "pid list :$pid"
kill -9 $pid
echo "KILL $pid:"
echo "stop success"
fi
sleep 3s
cd /xxx/xxx
nohup java -jar $jarfile &
jenkins脚本#为了让jar顺利运行使用 nohup方式,并配置jenkins节点变量 BUILD_ID=DontKillMe
Shell脚本(页面编译部署)
cd $WORKSPACE/xxx/xxxx
npm install
npm run build
pathA=/xxx/xx/xxx
if [ ! -d $pathA ];then
mkdir $pathA
else
echo dir exist
fi
rm -fR $pathA/*
cp -fR ./dist/* $pathA/
cd $WORKSPACE/xxx/xxx
npm install
npm run build
pathB=/xxx/xx/xxx
if [ ! -d $pathB ];then
mkdir $pathB
else
echo dir exist
fi
rm -fR $pathB/*
cp -fR ./dist/* $pathB/