Jenkins--H5 front前端自动化部署(Jenkins服务在Linux系统)

由于此次H5前端项目是多子项的前端项目,所以用到多参数构建。

下面先看一下构建页面如下:

接下来开始参数配置和脚本编写:

一、参数配置

git参数

 

子项参数,需要用到插件Extended Choice Parameter,可在Jenkins插件中心下载安装

环境参数

服务器参数

项目部署所在的目录参数

二、源码管理

三、构建步骤

构建依赖以及编译打包,使用shell脚本完成

 以下是完整脚本:

#!/bin/sh -l
# 项目名
pro_name=$JOB_BASE_NAME;
# 获得需要打包的子项
str=$Choiceiterms;
echo 参数Choiceiterms:$str
if [ "$str" == "" ];then
echo Error:参数Choiceiterms您没有选择,没有可编译打包的子项!!!
exit 1
fi
# 将拉下的代码与本地代码合并
git rebase origin/$GITBranch;

# 以,分隔符进行分割
dirs_arr=${str//,/ };

# 更换淘宝源
npm config set registry https://registry.npm.taobao.org ;

# 判断上次新建build文件是否存在,存在则删掉其中的内容
if [ -d "$pro_name" ];then
    echo "$pro_name 文件夹存在,删除文件夹里的内容";
    rm -rf $pro_name/*;
else
    echo "$pro_name 文件夹不存在,新建";
    mkdir $pro_name;
fi;

# 判断上次新建的压缩包是否存在,存在删除掉
if [ -f "$pro_name.tar" ];then
    echo "$pro_name.tar 存在,删除";
    rm -f "$pro_name.tar";
else
    echo "$pro_name.tar 不存在";
fi;

    
# 循环进入每个目录分别进行编译
for  i in ${dirs_arr[*]};
 do 
    echo "现在进行的是$i子项";
    cd $i;
    
    # 截取获取-后面的内容
    #i=${i#*-};   
    
    # 下载依赖包
    echo npm install
    npm install;
   

    
     # 若是测试环境,则按照test进行编译,生产环境按照prod编译
    if [ "$env" = "test" ];then    
        echo "构建测试环境包,运行npm run build:test";
        npm run build:test;
        
    elif [ "$env" = "prod" ];then    
        echo "构建生产环境包,运行npm run build:prod";
        npm run build:prod        
        
    else 
        echo "不支持该方式";
    fi;
    
    echo "创建$i 对应文件夹";
    mkdir $i;

    # 将build文件夹移到子项目文件夹
    echo "将build 文件夹移到$i子项文件夹中";
    echo | pwd;
    cp -r build/* $i/;
    
    # 将子项文件夹移动到$JOB_BASE_NAME文件夹中
    echo "将build 后$i子项文件夹移动到项目$pro_name文件夹";
    cp -r $i ../$pro_name/ ;
    
    # 返回项目根目录  
    cd ..;
   
 done
 # 将存放build的文件夹压缩
 echo 创建压缩包$pro_name.tar
tar -czvf $pro_name.tar $pro_name ;
View Code

四、构建后步骤

推送到服务并且替换原来的包

 完整脚本如下:

#!/bin/bash
# 输出当前目录
echo | pwd;
# 获得项目目录
pro_name=$JOB_BASE_NAME;
#复制压缩文件到指定目录/images/ums-front
cp $pro_name.tar $ProDir
echo 跳到项目目录cd $ProDir
cd $ProDir;
echo 解压缩文件$pro_name.tar
tar -zxvf  $pro_name.tar;
pwd;
# 复制要替换的子项内容出来
cp -rf $pro_name/*  .;
# 删除压缩包
rm -rf $pro_name.tar;
rm -rf $pro_name;
View Code

完成。~

晚生不才,请多指教!
原文地址:https://www.cnblogs.com/lkc-test/p/15351794.html