20

我使用 Jenkins 实现了一个持续集成管道,但作为最后一步,我希望 Jenkins 将签名的 APK 文件部署/上传到 Google Play 商店和 AndroidPit。我寻找了 Jenkins/Hudson 插件,但只找到了两个:一个用于 Appaloosa,一个用于 Zubhium。

我在 Google Play 和 AndroidPit 上都有一个可用的开发者帐户,并且可以手动上传 Jenkins 生成的 APK。但我的问题是:有人知道教 Jenkins 的方法(例如通过 shell 脚本吗?)将 APK 上传到上述应用商店?

4

6 回答 6

24

有一个用于 Jenkins 的Google Play Android Publisher 插件,它使用Google Play Publishing API,在 Google I/O 2014 上宣布。

Google 还发布了Java 和 Python 库来帮助使用 API。

有关 API 的更多信息,另请参阅:
http ://android-developers.blogspot.com/2014/07/grow-with-google-play-scaled-publishing.html

于 2014-07-29T18:28:55.820 回答
4

我只能为 Google 的 Play 商店说话。有一种方法,但请注意,它并不漂亮,您必须编写解决方案。我现在正在写一篇学士论文来解决这个问题——“Android 应用程序的持续交付”。我的解决方案是我的,这意味着我不会声称拥有完美的解决方案,但我可以说它是非常有效的原型。

我发现了以下内容:

  • 第一个解决方案是没有。谷歌提供了一个Play Store API,但它缺乏上传内容。似乎他们已经在考虑制作这样的 API,但它只提供应用内计费控制

  • 第二种解决方案是使用 Apache HttpComponents 库,它可以让您为 Google Play 开发者控制台实现自己的客户端,但HttpClient缺少 JavaScript 解释器......有几种方法可以实现或添加一个。但当然,这不是最简单的方法。

  • 我正在研究的第三个解决方案是使用Selenium Web 浏览器自动化框架。所以基本上我从那些 Play 商店页面和对话中创建PageObjects 。之后,您可以创建一些工厂来维护控制这些 PageObjects 的“路径”。

使用它们,据我所知,您有两个选项,例如WebDriver 对象,它使用像 FF 或 Chrome 这样的“不可见”浏览器进程,而我使用的另一个是ChromeDriver,它使用可见的浏览器进程来执行用户操作。并且不要忘记使用异常处理程序,它会在使用时扫描网页以查找出现的错误。

由于 Google 的设计可能发生变化,因此存在很多陷阱,这会让您的软件崩溃。但也有一些方法可以处理。=) 并创建一个包含有关应用程序的所有有价值信息的 XML,这在继续下一步时会派上用场。

您可以创建一个 Maven 插件。您可以将其加载到您的持续集成服务器中。我希望我能帮助你一点。

于 2013-02-23T16:33:57.700 回答
3

自从 Google Play 发布了上传 API 后,做了一个插件:

https://wiki.jenkins-ci.org/pages/viewpage.action?pageId=73533143

我还没有尝试过,但看起来这正是我们想要的。

还有其他插件声称做同样的事情(感谢@mdt)

于 2014-08-27T15:06:13.920 回答
2

我相信它目前不包含在 PlayStore API 中,以减轻系统压力并避免滥用。

我相信我们将来可能会在 gradle 插件和 IDE 中看到这一点。当我们等待谷歌决定开放 API 时,这里有一个解决方案,太简单了,我只好提出它:

如果您有 GUI,请在最后一步使用 GUI 自动化。

于 2014-01-15T11:09:16.160 回答
1

适用于 Jenkins 的 Google Play Android Publisher 插件是一个不错的插件。但是,它不支持上传描述和屏幕截图(至少目前是这样)。

我找到了不错的 Gradle 插件,名为Gradle Play Publisher。支持上传apk、更新元数据、上传截图。它只需要几个步骤来设置。

于 2015-05-07T05:51:25.040 回答
1

首先在浏览器中转到Google Play 控制台,打开您的应用页面,然后寻找允许新电子邮件地址上传 APK 的选项。如果它不存在,则可能意味着您不是该 Play 商店帐户的管理员,您需要让管理员为您添加它(基于每个应用程序)。要了解要添加的电子邮件地址,请访问Google Developer Service Accounts并为您现有的任何 Google 开发人员服务帐户创建 JSON 密钥,或使用 JSON 密钥创建新服务帐户。请注意与您已为其创建(或将要创建)JSON 密钥的服务帐户关联的电子邮件地址。它很可能是 gserviceaccount.com 上的东西。此电子邮件地址必须由对您的 Play 帐户具有管理员访问权限的人授予上传 APK 的权限。

完成之后,通过下载Madison Dickson 的 Marta Rodriguez 脚本的更新版本并通过(或根据需要)wget https://gist.githubusercontent.com/mix3d/665f4ab329b4482297a2f425ebba402c/raw/0949385dd6c80d0701170746b1bd5fd479303412/basic_upload_apks_service_account.py安装依赖项。pip install google-api-python-clientsudo pip install google-api-python-client

然后在您可以使用的自动化脚本中(例如)python basic_upload_apks_service_account.py -t beta -p org.example.MyApp -s JSON_file_I_made.json -a MyApp.apk(假设您的 JSON 文件、您的 APKbasic_upload_apks_service_account.py都在当前目录中并且pip install已经在该机器或容器上完成)。

我强烈建议上传到 beta(因此-t beta在上面)而不是直接上传到生产环境。以防万一出现问题并且它以某种方式到达 APK 上传。我认为“推出到生产”的最后压力应该总是由人来完成。但是,如果您真的也想自动执行此操作,则可以-t production改用。

于 2018-02-26T18:11:14.933 回答