shell讀取構建檔案資訊生成json字串

devilcry13發表於2019-01-03

需求:指令碼讀取文字檔案中的構建資訊,列印資訊,並生成json格式字串,json字串用於robot framework呼叫Jenkins打包用(需要job_name,job_tag及job_type)

指令碼如下:

#!/usr/bin/sh

### 輸入檔案格式如下:
# xxx需求--介面改動       http://svn.xxx.com/xxx/refund_back/branches/3.0.8/ 
# xxx需求--介面改動       http://svn.xxx.com/xxx/refund_core/branches/3.2.7/ 
# xxx需求--介面改動       http://svn.xxx.com/xxx/refund_server/branches/2.6.1/ 
# xxx需求--介面改動       http://svn.xxx.com/xxx/refund_facade/branches/2.0.1/

#各模組名陣列
MOD=(refund_domain refund_facade refund_core refund_server refund_back refund_manager_core refund_manager_app)
SPLINE="-------------------------------------------------------------"

#指令碼用法,並抓取檔案內容到NCSTR變數中
[ $# -lt 1 ] && echo "Usage: `basename $0` + build_info_file" && exit -1 || INFL=$1 && NCSTR=`cat $INFL| grep "http" | sed -e "s#.*\(http.*/\).*#\1#g" -e '/^$/d'`

#解析NCSTR變數,輸出build資訊,並生成JSON格式字串
echo ${SPLINE}
jstr="["
for mod in ${MOD[@]};do
        version=`echo $NCSTR|awk -F"${mod}/branches/" '{print $2}'|cut -d'/' -f1`
        if [ "X"${version} != "X" ];then
                case ${mod} in
                        refund_domain|refund_facade|refund_core)
                                #更新程式碼
                                #cd /d/ideal_code/${mod}
                                #url=`svn info | grep -E "^URL: " | sed 's/.*\(http.*branches\/\).*/\1/g'`$version
                                #svn sw $url
                                #svn update
                                job_name="wc_"${mod}"_nexus"
                                job_type="jar"
                                ;;
                        refund_server|refund_back)
                                job_name="wc_"${mod}
                                job_type="war"
                                ;;
                                *)
                                        :
                                ;;
                esac
                job_tag=${version}
                jstr=$jstr"{\"job_name\":\"${job_name}\",\"job_tag\":\"${job_tag}\",\"job_type\":\"${job_type}\"},"
                echo -e "${job_name}\t${mod}\t${version}"
        fi
done
jstr=${jstr%,}
jstr=${jstr}"]"

echo ${SPLINE}
echo ${jstr}

robot framework 打包
shell指令碼生成的字串作為${builds_str}
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

相關文章