publish.sh

EPG 发布脚本。

执行 scripts/publish.sh

脚本执行之后的效果图:

img

执行之后,等待输入,此时输入类型有两种

  1. 单个数字(上面列表必须存在),只会打指定的模块
  2. 多个数字,逗号隔开(上面列表中必须存在),只会打指定的多个模块
  3. 直接输入 “all” 将打完整 EPG 包

单个模块:

img

多个模块:

img

all 完整包,输入之后会有再次确认:

img

再次确认之后,将执行打包:

img

支持的选项

-b 是否重新构建模块

使用: scripts/publish.sh -b

打包之前会将指定模块进行编译,如果没指定则默认不编译(即,假设已经编译完成)

执行之后效果图,会执行编译:

img

编译完成之后会自动打包,上传到 46 服务器

img

-m name1,name2 命令行指定模块

使用: scripts/publish -m modules/advert,modules/bill

通过命令行选项指定模块。

效果图:

img

-v 3.0.0.001 命令行指定版本号

使用: scripts/publish -b -m modules/advert,modules/bill -v 3.0.0.001

即所有信息由命令行直接指定。

一般情况下版本号不需要通过命令号指定。

因为在修改代码之后确定要发版本了就必须的提交代码,先增加版本 tag。

使用脚本: scripts/epg.sh tag 3.0.0.001

epg.sh tag 执行的任务:

  1. 为 EPG 增加 tag
  2. 为 commons 增加 tag
  3. 提交 EPG 和 commons tag
  4. 更新所有模块的 commons 目录
  5. 将 tag 写入到 scripts/versions 版本文件

这个脚本代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 增加 & 提交 tag
add_tag() {
if [ -z "$1" ]; then
error "version tag required."
exit 0
fi

clone_version # 先更新版本文件
git_tag $1
cd $EPG_HOME/EPG_Login_Auth/src/commons
git_tag $1
git_pull
update_version $1

cd $EPG_HOME
git add .
git commit -m 'update versions'
git push
}

执行之后 update_version 会自动更新 scripts/versions 版本文件中自动更新版本变量值,如下:

1
2
3
update_version() {
echo "PUB_EPG_VERSION_NO=\"$1\" # $(date)" >> $EPG_SCRIPTS/versions
}

版本信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/local/bin/bash
PUB_EPG_VERSION_NO="3.0.0.001"
PUB_EPG_VERSION_NO="3.0.0.001"
PUB_EPG_VERSION_NO="3.0.11.001"
PUB_EPG_VERSION_NO="3.0.11.002"
PUB_EPG_VERSION_NO="3.0.11.003"
PUB_EPG_VERSION_NO="3.0.11.004" # Wed Jul 17 19:03:38 CST 2019
PUB_EPG_VERSION_NO="3.0.12.001" # Wed Jul 17 19:51:25 CST 2019
PUB_EPG_VERSION_NO="3.0.12.002" # Wed Jul 17 19:55:05 CST 2019
PUB_EPG_VERSION_NO="3.1.12.003" # Wed Jul 17 19:57:09 CST 2019
PUB_EPG_VERSION_NO="3.0.12.004" # Wed Jul 17 19:57:53 CST 2019
PUB_EPG_VERSION_NO="3.0.12.005" # Wed Jul 17 20:01:03 CST 2019
PUB_EPG_VERSION_NO="3.0.13.001" # Wed Jul 17 20:30:29 CST 2019
PUB_EPG_VERSION_NO="3.0.13.002" # Wed Jul 17 20:46:56 CST 2019
PUB_EPG_VERSION_NO="3.0.13.002.test" # Thu Jul 18 17:42:21 CST 2019

且在使用 scripts/publish.sh 发布版本的时候会自动去读取 scripts/versions 中的版本值,因此这里的 -v 选项一般不用,如果用了也没关系,因为在处理选项的时候有将更新 scripts/versions 文件。

在 scripts/publish.sh 中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use_opt_m=0
while getopts :abm:p:v: opt
do
case "$opt" in
a) ARG_MODULE="all";; # -a 表示打包所有
b) ARG_BUILD="build";; # -b 表示要构建模块代码
m) use_opt_m=1
ARG_MODULE="$OPTARG" ;; # -m all 或 "modules/advert,modules/bill"
p) ARG_PROV="$OPTARG";; # -p 省份标识
v) ARG_VERSION="$OPTARG"
if [ -n "$ARG_VERSION" ]; then
update_version "$ARG_VERSION"
fi

;; # -v 1.0.0.001 版本号
*) warn "Unknown option: $OPTARG";;
esac
done

epg.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/local/bin/bash

source $EPG_SCRIPTS/declare.sh

# 更新 commons 代码
if [ "$1" = "pull" ]; then
git_pull
elif [ "$1" = "async-build" ]; then
build_epg async
elif [ "$1" = "build" ]; then
build_epg
elif [ "$1" = "tag" ]; then
add_tag $2
elif [ "$1" = "version" ]; then
clone_version
elif [ "$1" = "commons" ]; then
clone_commons
elif [ "$1" = "status" ]; then
git_status
else
echo "nothing done."
fi

epg.sh 脚本中有几个功能:

命令行 对应函数 功能
scripts/epg.sh pull git_pull 更新所有 commons 的代码
scripts/epg.sh async-build build_epg async 执行异步编译(同步太慢)
scripts/epg.sh build build_epg 同步编译
scripts/epg.sh tag add_tag $2 打 git tag
scripts/epg.sh version clone_version 将更新后的所有版本文件更新到每个模块(assets/debug/)里面去
scripts/epg.sh commons clone_commons 从零拉取EPG代码的时候使用,拉取完EPG代码,执行这个命令将 commons 模块自动更新到各个模块的 src/ 下面
scripts/epg.sh status git_status 查看所有 commons 的 git 状态
0%