之前我曾经写过macOS app 实现自动化 notarize 脚本,由于我的输入法使用微软的 HockeyApp 进行崩溃统计,所以我还需要把 app 上传到这里进行一次“发布”,好让 HockeyApp 能够收到对应版本的错误统计。
如今,微软的 HockeyApp 已经更新成了 AppCenter,自动化命令也十分友好,其实这个操作也可以加入到你的自动化脚本里边,一步到位。
/appcenter-cli
我们直接下载官方的命令行工具即可: sudo npm install -g appcenter-cli ,安装好后,使用命令 appcenter setup-autocomplete 来添加命令行自动补全功能,这样会方便很多。
然后使用命令 appcenter login ,这样生成的 Token 会自动保存,不需要每次上传都登录。
期间 appcenter 命令会问你一个 telemetry 什么的东西,我没搞懂是啥……0.0 反正直接启用了。
获取 App 列表
首先,你的 AppCenter 应该已经新建了这个 App 对吧?总之,如果我们要用命令发布更新,那就必须知道这个 App 对应的名称,它的格式是这样的: owner/app ,但如果你直接按照 AppCenter 里显示的去写,那么很有可能你会遇到如下错误:
1 |
Error: failed to create release upload for xxx.zip |
使用 --debug 参数后得到详细错误:
1 2 3 4 |
... ... / Creating release upload...Response status code: 403 Body: {"message":"Forbidden","statusCode":403,"code":"Forbidden"} |
显然,我们的操作被拒绝了,原因就是——其实你的用户名称和 App 名称可能并不是网站上显示的那个。
使用命令 appcenter apps list 查看当前拥有的 App 列表,你就发现你的 App 很有可能叫这个名字:
1 2 3 4 5 |
$ appcenter apps list name/123 name/la4-ge2-shu1-ru4-fa3 name/la4-ge2-shu1-ru4-fa3-X name/pian1-hao3-she4-zhi4 |
……就是这么的令人绝望。
还好,我们可以用命令 appcenter apps show name/123 来查看对应 App 的详情:
1 2 3 4 5 6 7 8 9 10 11 12 |
App Secret: ca2f1f12-b072------8661-c----421e279 Description: Display Name: YourAppName Name: 123 OS: macOS Platform: Objective-C-Swift Release Type: Production Owner ID: -bef--f9-c4c0-4c8f-b787-aab4192a390f Owner Display Name: --- Owner Email: --- Owner Name: name Azure Subscription ID: |
在高亮的第三行你可以看到这个 App 在网站的名字,这样就能将这里的名字和你网站上一直以来自己设定的名字对应起来。
(没错,这个傻屌随机名不能改。)
上传更新和符号链接
找到了对应 App 的名字,接下来就是容易的部分了:
1 |
appcenter distribute release -f xxx.zip --silent -g Collaborators -a name/123 -b 1985 |
与在网页上上传不同的是,这里 AppCenter 不能再帮你自动推断 App 的 Build 版本号了,所以你还是需要再输入一次 -b 1985 ,另外 --silent 要求这个更新不通知用户, -g Collaborators 指定要发布到哪个测试组。
上传发布成功后结果类似这样:
1 |
Release 2.3.0 Beta (1985) was successfully released to 1 testers in Collaborators |
接下来是上传编译链接文件以供崩溃统计之用:
1 |
appcenter crashes upload-missing-symbols -a name/123 ./symbols |
直接指定包含链接文件的目录即可,appcenter 会自动遍历目录寻找所有的链接文件,然后只会上传需要的那一份,上传成功后结果类似这样:
1 2 |
6 symbols are needed to symbolicate all crashes 1 of these symbols were found and uploaded |
这样,你编译好的更新版本就能自动发布到 AppCenter 了呢。
参考文献
- https://github.com/Microsoft/appcenter-cli
-
How to push IPA and APK file to App Center Distribute from appcenter command line and Jenkins
本文由 落格博客 原创撰写:落格博客 » macOS app 自动化上传发布到 AppCenter
转载请保留出处和原文链接:https://www.logcg.com/archives/3290.html