Как загрузить APK из Jenkins/Hudson в Play Store?
Я реализовал непрерывный интеграционный конвейер, используя Jenkins, но в качестве последнего шага я хочу, чтобы Jenkins развернул/выгрузил подписанный файл APK в Google Play Store и AndroidPit. Я искал плагины Дженкинса/Хадсона, но нашел только два: один для Аппалузы и один для Зубиума.
У меня есть рабочая учетная запись разработчика как в Google Play, так и на AndroidPit, и вы можете вручную загрузить APK, который производит Jenkins. Но мой вопрос: Кто-нибудь знает способ научить Jenkins (например, через оболочку script?) загрузить APK в указанные магазины приложений?
Ответы
Ответ 1
Существует плагин Google Play Android Publisher для Jenkins, который использует API публикации Google Play, объявленный в Google I/O 2014.
Google также выпустила библиотеки Java и Python, чтобы помочь использовать API.
Подробнее о API см. также:
http://android-developers.blogspot.com/2014/07/grow-with-google-play-scaled-publishing.html
Ответ 2
Я могу говорить только в Google Play Store. Есть способ, но будьте осторожны, это не красиво, вам нужно закодировать свое решение. Я сейчас пишу диссертацию на тему "Бакалавриат" для решения этой проблемы - "Непрерывная доставка для приложений для Android". Мое решение - мое, это означает, что я не претендую на то, чтобы иметь идеальное решение, но могу сказать, что это довольно эффективный прототип.
Я узнал следующее:
-
Первое решение - это нет. Google предлагает Play Store API, но ему не хватает возможности загружать файлы. Похоже, что они уже подумывали о создании такого API, но он только предлагает управление биллингами In-App
-
Второе решение - использовать библиотеку Apache HttpComponents, которая позволяет вам реализовать собственный клиент для консоли разработчика Google Play, но HttpClient отсутствует JavaScript-интерпретатор... Несколько способов реализовать или добавить один. Но, конечно, не самый простой способ.
-
Третьим решением, над которым я работаю, является использование Selenium Рамки автоматизации веб-браузера. Поэтому в основном я создаю PageObjects из этих страниц и диалогов в Play Маркете. После этого вы можете создать несколько Factory для поддержки "исправлений" управления этими объектами PageObjects.
Используя их, у вас есть два варианта, насколько я могу видеть, например WebDriver Objects, который использует "невидимый" браузерный процесс, такой как FF или Chrome, а другой - ChromeDriver, который использует видимый процесс браузера для выполнения действий пользователя. И не забывайте иметь обработчики исключений, которые сканируют веб-страницу на наличие ошибок во время использования.
Есть много подводных камней из-за возможных изменений в дизайне от Google, что позволяет вашему программному обеспечению сломаться. Но есть некоторые способы справиться с этим. =) И создайте XML, содержащий всю полезную информацию о приложении, которая пригодится, когда переходите к следующему шагу.
Вы можете создать плагин Maven. Это можно загрузить на сервер непрерывной интеграции. Надеюсь, я немного помогу.
Ответ 3
Я считаю, что он не включен в API PlayStore в настоящее время, чтобы снизить нагрузку на систему и избежать злоупотреблений.
Я считаю, что мы увидим это в плагине gradle и в IDE в будущем.
Пока мы ждем, когда Google решит открыть API, вот решение, которое является таким порогом, что я просто должен был предложить его:
Если у вас есть GUI, используйте автоматизацию графического интерфейса для последнего шага.
Ответ 4
Поскольку Google Play выпустил API загрузки, был добавлен плагин:
https://wiki.jenkins-ci.org/pages/viewpage.action?pageId=73533143
Я еще не пробовал, но похоже, именно то, что мы искали.
Существуют и другие плагины, которые утверждают, что делают то же самое (спасибо @mdt)
Ответ 5
Плагин Google Play Android Publisher для Jenkins - хороший. Однако он не поддерживает загрузку описаний и скриншотов (по крайней мере пока).
Я нашел достойный плагин Gradle, называемый Gradle Play Publisher. Он поддерживает загрузку apk, обновление метаданных и загрузку скриншотов. И для установки требуется всего несколько шагов.