Jenkins部署前后端分离项目经验

本经验是建立在 linux 操作系统下的成功部署经验。

Jenkins 启动

下载安装包

wget -c http://mirrors.jenkins.io/war-stable/latest/jenkins.war

启动脚本 start.sh

#!/bin/bash
export JENKINS_HOME=/path/jenkins/.jenkins

cd /path/jenkins

echo "running jenkins server ...."
nohup java -Dhudson.util.ProcessTree.disable=true -Xmx512m -Xms512m -Xmn185m -Xss256k -jar jenkins.war --httpPort=8080 2>&1 | cronolog log.%Y-%m-%d.out >> /dev/null & 
echo "running jenkins server finish"

说明:

  • JENKINS_HOME 用于更改 工作区 的目录,避免系统盘下占用太多空间
  • -Dhudson.util.ProcessTree.disable=true 这个参数用于启动 shell 脚本,如果不加此参数,编译工具后,通过shell启动的进程会被自动释放掉
  • –httpPort=8080 代表后端启动的端口,可根据自身情况,选择不同的端口
  • nohup linux 工具,用于分割日志,挺好用的,后台运行

停止脚本 stop.sh

#!/bin/sh
process=`ps -fe|grep "jenkins.war" |grep -ivE "grep|cron" |awk '{print $2}'`
if [ !$process ];
    then
        echo "stop jenkins process $process ....."
        kill -9 $process
        sleep 1
else
    echo "jenkins is already stop!"
fi

后端 Jenkins 编译脚本

cd server/

mvn clean package

PROJECT=project.jar
DEST="/path/project"

sh ${DEST}/stop.sh

OLD=${DEST}/${PROJECT}
BACKUPPATH=${DEST}/`date +%Y%m%d`
BACKUPOLD=${BACKUPPATH}/${PROJECT}

if [ ! -d ${BACKUPPATH} ]; then
    mkdir ${BACKUPPATH}
fi

if [ -f ${BACKUPOLD} ]; then
    rm -f ${BACKUPOLD}
fi

if [ -f ${OLD} ]; then
    mv ${OLD} ${BACKUPPATH}/ 
fi

cp server/target/${PROJECT} ${OLD}

cd ${DEST}/script/

./start.sh

sleep 10s

说明:
主要流程: 在编译时,将上一个文件进行备份,然后将最新的文件复制到项目目录。并调用 后台启动脚本。

【关键】 ./start.sh 这句话,一定要让 jenkins 按文件开场的方式进行实现,否则,在编译结束后,启动的进程将会被 jenkins 终止。造成后台启动失败。

【前提】 在服务器上,已成功配置好了 maven的环境,这里做个简单的说明。

下载好 maven 包,然后 将 maven 命令添加到系统环境中

// maven 环境变量配置
vi /etc/profile.d/maven.sh

#!/bin/bash
export MAVEN_HOME=/path/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin


chmod 744 /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh

前端 Jenkins 编译脚本

echo $PATH
node -v
npm -v

npm config set registry http://registry.npm.taobao.org/

cd project
cnpm install
npm run build

PROJECT=project
DEST="/path/project"

OLD=${DEST}/${PROJECT}
BACKUPPATH=${DEST}/`date +%Y%m%d`
BACKUPOLD=${BACKUPPATH}/${PROJECT}

if [ ! -d ${BACKUPPATH} ]; then
    mkdir ${BACKUPPATH}
fi

if [ -d ${BACKUPOLD} ]; then
    rm -rf ${BACKUPOLD}
fi

if [ -d ${OLD} ]; then
    mv ${OLD}/ ${BACKUPPATH}/ 
fi

cp -r dist/ ${OLD}

chmod -R 755 ${OLD}

说明,
在项目目录下,建立以 日期 为名称的文件夹,便于备份之前的版本文件
将最新编译好的文件夹夹复制到项目文件夹

在 Jenkins 全局工具配置好 nodejs 的版本
在这里插入图片描述

设定不同项目的用户权限

新增用户
在这里插入图片描述

Manage and Assign Roles 插件

在这里插入图片描述

细节补充

git 仓库没有必要每次编译都删除,浪费空间和时间。如下图配置好即可。
在这里插入图片描述
添加对应的 角色,并赋予相应的权限,如下图所示:
在这里插入图片描述
赋予相应用户对应的权限,需要用用户名添加,然后,勾选相应的权限。保存后,刷新页面后会自动更新成用户的全名显示。
要注意的时,添加后,一定要勾选角色,否则刷新后就无数据了。

在这里插入图片描述

更详细的操作说明,参照这篇文章。
https://www.cnblogs.com/wjoyxt/p/6677115.html

【特别注意】设置分配角色后,必须重启 Jenkins 才会生效。

posted @ 2020-05-20 15:53  lvye1221  阅读(76)  评论(0)    收藏  举报