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版本