Jenkins 部署Unity 自动打包 (svn自动化切换分支上传) (Mac Shell命令)
文章目录
前言
团队人员需要客户端的包去看效果,不可能让我们前端去给他们打包,所以就写了自动化程序,部署到Jenkins环境上
提示:以下是本篇文章正文内容,下面案例可供参考
一、Jenkins是什么?
Jenkins 大家可以去百度了解,安装部署等在百度上很多教程,这里不再讲解。
二、首先要写shell脚本
1.在Mac 上新建build.sh文件
$ touch build.sh
$ vim build.sh
写shell 逻辑
#!/bin/sh
# 分支本地路径
svnpath=$1
# 平台
platform=$2
# 分支url http
branchesUrl="url"
# 拼接完成的分支url
branches="${branchesUrl}/${3}"
trunk="trunk"
windows="windows"
android="android"
# app path
UNITY_PATH="/Applications/Unity/Hub/Editor/2020.3.12f1c1/Unity.app/Contents/MacOS/Unity"
# project path
PROJ_PATH="/Users/game/client"
# App path
APP_PATH="/Users/bin/client/intranet/${platform}"
# 如果出包目录为空 则创建目录
if [ ! -d "$APP_PATH" ]; then
mkdir "$APP_PATH"
fi
# 定位到对应的本地分支地址
if [ $svnpath = $trunk ];then
PROJ_PATH="${PROJ_PATH}/${svnpath}"
if [ $platform = $android ];then
PROJ_PATH="${PROJ_PATH}_an"
fi
cd $PROJ_PATH
svn cleanup
svn up
echo $PROJ_PATH
else
PROJ_PATH="${PROJ_PATH}/${svnpath}/${svnpath}1"
if [ $platform = $android ];then
PROJ_PATH="${PROJ_PATH}_an"
fi
cd $PROJ_PATH
svn cleanup
svn sw $branches
svn up
echo $PROJ_PATH
fi
# svn 还原
svn revert Assets -R
# svn 删除掉没有版本控制的文件及文件夹
svn status Assets | grep '^?' | awk '{print $2}' | xargs rm -rf
# 表路径 打表 更新最新的表
DATA_PATH="${PROJ_PATH}/data/AlphaData"
# 游戏表路径
GAME_DB_PATH="${PROJ_PATH}/Assets/AssetBundles/DB"
echo "开始生成数据表"
cd data/ExcelTools
./ExcelTool.sh db $DATA_PATH $GAME_DB_PATH 0 gameConfig.db.bytes 0 0
echo "数据生成成功"
echo "开始出包App"
# 先更新出包目录
cd $APP_PATH
svn up
# "============== Unity Build EXE Begin =============="
$UNITY_PATH -projectPath $PROJ_PATH -executeMethod CS.Jenkins.JenkinsHelper.JenkinsBuild -batchmode -logFile ${APP_PATH}/Log/${platform}.log -quit $1 $2 $3
# "============== Unity Build EXE Finish =============="
echo "App出包成功"
echo "svn提交打好的包"
svn add --force $APP_PATH/*
svn commit $APP_PATH/ -m "readme ..."
2.创建Jenkins 任务项目
增加参数构建
增加构建步骤
#!/bin/bash -ilex
cd /Users/game
./build.sh $svnpath $platform $branches
效果如下
2.创建Jenkins 自动化任务项目
此自动化任务是访问svn 查看分支有多少列表
然后自动化填入 本地表中,方便参数三读取
首先我们构建触发器,让它没一分钟检查一次svn 列出svn 分支列表
CheckSvnList.sh 内容如下
#!/bin/sh
mysvn list http://svn.xxx.com/svn/game/client/branches > branchesPath.txt
# 合并到一行逗号隔开 保存到临时文件中
echo `xargs < branchesPath.txt`|tr " " "," > temp.txt
# 删除 原本的文件
rm -rf branchesPath.txt
# 去掉/
sed -i '' 's/\///g' temp.txt
content=`cat temp.txt`
# 给内容加上前缀 branches= 让jenkins读取
echo "branches=${content}" > temp1.txt
rm -rf temp.txt
# 替换成原文件
mv temp1.txt branchesPath.txt
到此svn jenkins 自动化分支做完
总结
本次在Mac部署jenkins 自动化 学到了很多Mac命令 和svn命令,和我有一样需求的同学快去动手吧。如有不足地方请指正。新人一枚