jenkins自动打包jws项目

一、配置git

打开git项目http://git.ucweb.local/

点击右边的Deploy Keys,在页面右边点击“Enable"按钮。

点击右边的Web Hooks,在Url中输入公司Jenkis Build地址:http://ci.ucweb.local/ci/gitlab/build_now 选择Push events、Tag push events复选框,点击Add Web Hook按钮保存

二、配置Jenkins

选中红框的2个权限

增加参数化构建打包配置:

BRANCH_NAME 分支名称 master String类型

FILE_TAG 打包输出文件标记 v1.0.0-RC0 String类型

Repository URL为项目的git地址

在Jenkins项目中的配置 "Execute shell"选项

#配置
uae_project_id=844
pack_folder="android-task-releases"
jenkins_project_name="android_task"

# 获取最新代码

if [[ "$GIT_PUSH_BRANCH" =~ v[0-9].[0-9].[0-9][0-9]?.[0-9]-RC[0-9]+ ]]; then
    #部署到测试环境,如果命名文件为v1.0.0.0-RC1,此时将从master分支进行拉取,并发布下载包(上传到UAE)
    pushType="test"
    git checkout $GIT_PUSH_BRANCH
    git pull origin $GIT_PUSH_BRANCH

    RESULT=`git merge origin/master`
    if [ $? = 0 ]; then
        if [ "Already up-to-date." = "$RESULT" ]; then
            echo "ok"
        else
            echo "Need to merge master!"
            git reset --hard HEAD^
            exit 1
        fi
    else
        echo "Need to merge master!"
        git reset --hard HEAD^
        exit 1
    fi

elif [[ "$GIT_PUSH_BRANCH" =~ v[0-9].[0-9].[0-9][0-9]?.[0-9] ]]; then
    #部署到生产环境,如果命名文件为v1.0.0.0,此时将从tag分支进行拉取,并发布下载包(上传到UAE)
    pushType="publish"  
    git checkout $GIT_PUSH_BRANCH
    git pull origin $GIT_PUSH_BRANCH

    RESULT=`git merge origin/master`
    if [ $? = 0 ]; then
        if [ "Already up-to-date." = "$RESULT" ]; then
            echo "ok"
        else
            echo "Need to merge master!"
            git reset --hard HEAD^
            exit 1
        fi
    else
        echo "Need to merge master!"
        git reset --hard HEAD^
        exit 1
    fi
elif [ "" != "$BRANCH_NAME" ]; then 
    pushType="dev"
    git reset --hard HEAD^
    git checkout $BRANCH_NAME
    git pull origin $BRANCH_NAME 
else
    pushType="dev"
    git reset --hard HEAD^
    git checkout $GIT_PUSH_BRANCH
    git pull origin $GIT_PUSH_BRANCH
fi

source /home/jdk6/.bashrc
echo $JAVA_HOME
echo "$pushType"
echo "$GIT_PUSH_BRANCH"


if [ $pushType != "" ]; then

   sh pack.sh

   if [ $pushType = "test" ]; then
        /home/jdk6/local/ci_script/upload2newuae -pkg_path ./$pack_folder -app_id $uae_project_id
   elif [ "$pushType" = "publish" ]; then
        /home/jdk6/local/ci_script/upload2newuae -pkg_path ./$pack_folder -app_id $uae_project_id
   #else
   #     /home/jdk6/local/ci_script/upload2newuae -pkg_path ./$pack_folder -app_id $uae_project_id
   fi

   upload_file_name=`ls -t ./$pack_folder | head -1`  
   echo "本次生成包下载地址:http://ci.ucweb.local/files/$jenkins_project_name/$upload_file_name"

   /home/jdk6/local/ci_script/pkgs2http -n $jenkins_project_name -p $pack_folder

   mkdir -p pkg_list
   mv pkg_list.html pkg_list

  else
      echo "不用构建"
fi

说明:

uae_project_id=809   #UAE 项目ID地址
pack_folder="pp-service-admin-releases"     #pack.sh打包输出文件夹名称
jenkins_project_name="android_management"    #jenkins项目名称

JWS项目增加pack.sh

#!/bin/sh

current_tag=$GIT_PUSH_BRANCH
if [ "" != "$FILE_TAG" ]; then
    current_tag="$FILE_TAG"
fi

pack_time=`date -d now +'%Y%m%d%H%M'`
pack_name="android-management-$current_tag-"$pack_time
pack_folder="android-management-releases"

rm -Rf dist
rm -Rf modules
/home/jdk6/local/jws-1.5.3/jws pack
#cp -r libexe dist
mv dist $pack_name
cd $pack_name
tar -czf $pack_name.tgz *
cd ..

mkdir -p $pack_folder
mv $pack_name/$pack_name.tgz $pack_folder/

rm -rf $pack_name

注意:

pack.sh必须为Unix格式utf-8编码

/home/jdk6/local/jws-1.5.3/jws pack  #注意jws版本

results matching ""

    No results matching ""