Jenkins多项目可选sh配置

146 阅读1分钟
  1. 配置策略 Discard old builds ,节省服务器资源空间

image.png 2. 配置选择分支 This project is parameterized,这里配置的变量分支,然后这里配置多项目可选打包check boxes 打开Choose source for value image.pngimage.png 配置你的目录名字 image.png

  1. 源码管理,配置Repository URL仓库地址和Credentials相关证书

image.png 4. Build Steps配置shell脚本 Execute shell

#!/bin/bash -ilex

echo $PATH

packages="home,financial,enterprise,gov,admin"
project_path=""

OLD_IFS="$IFS"
IFS=","
arr=($mutiParams)
IFS="$OLD_IFS"

rm -rf $WORKSPACE$project_path/publish

for i in ${arr[@]}
do
	echo '打印i:' + $i 
    pnpm -v
    node -v 
    cd $WORKSPACE$project_path/$i
    rm -rf dist
    if [[ $isRunInstall == "true" ]]
    then
       pnpm install
    fi
    
    if [[ $i == "home" ]]
    then
      if [[ $nodeDev == "development" ]]
      then
      pnpm build:test
      fi
    else
     pnpm build
     chmod 777 $i
    fi
    
    if [[ $i == "home" ]]
    then
    	newsubdir=$i
    else
    	subdir=${i%Manage*}
        newsubdir=${subdir##*/}
    fi
    
    
    mkdir -p $WORKSPACE$project_path/publish/${newsubdir,,}
    mv ${newsubdir,,}/* $WORKSPACE$project_path/publish/${newsubdir,,}
    
    echo '打印WORKSPACE:' + $WORKSPACE
    echo '打印newsubdir:' + $newsubdir
done

  1. 构建后操作,配置Send build artifacts over SSH ,这里就是要把工作空间构建后的前端资源包推给Nginx代理的那台服务器,Remote directory这里放的是Nginx配置的目录指向地址

image.png 这里的脚本目录是和Remote directory里指向的同一个目录,举个例子 /test/project-name

#!/bin/bash -ilex
packages=""
PUBLISH_PATH=/data/static/test/project-name

for package in `ls $PUBLISH_PATH/publish`
do 
    if [[ $package == "home" ]]
    then
        for element in `ls $PUBLISH_PATH`
        do
    	    [[ ${packages,,} =~ $element ]] || rm -rf $PUBLISH_PATH/$element
        done
        mv $PUBLISH_PATH/publish/$package/* $PUBLISH_PATH
    else
        chmod 777 /data/static/test/project-name
        rm -rf $PUBLISH_PATH/$package
        mkdir -p $PUBLISH_PATH/$package
        mv $PUBLISH_PATH/publish/$package/* $PUBLISH_PATH/$package
    fi
done
rm -rf $PUBLISH_PATH/publish

最终结果如图

image.png