[android][ios] Upload metadata and screenshots to AppStore / GooglePlay #1035
Labels
No labels
Accessibility
Accessibility
Address
Address
Android
Android
Android Auto
Android Auto
Android Automotive (AAOS)
Android Automotive (AAOS)
API
API
AppGallery
AppGallery
AppStore
AppStore
Battery and Performance
Battery and Performance
Blocker
Blocker
Bookmarks and Tracks
Bookmarks and Tracks
Borders
Borders
Bug
Bug
Build
Build
CarPlay
CarPlay
Classificator
Classificator
Community
Community
Core
Core
CrashReports
CrashReports
Cycling
Cycling
Desktop
Desktop
DevEx
DevEx
DevOps
DevOps
dev_sandbox
dev_sandbox
Directions
Directions
Documentation
Documentation
Downloader
Downloader
Drape
Drape
Driving
Driving
Duplicate
Duplicate
Editor
Editor
Elevation
Elevation
Enhancement
Enhancement
Epic
Epic
External Map Datasets
External Map Datasets
F-Droid
F-Droid
Fonts
Fonts
Frequently User Reported
Frequently User Reported
Fund
Fund
Generator
Generator
Good first issue
Good first issue
Google Play
Google Play
GPS
GPS
GSoC
GSoC
iCloud
iCloud
Icons
Icons
iOS
iOS
Legal
Legal
Linux Desktop
Linux Desktop
Linux packaging
Linux packaging
Linux Phone
Linux Phone
Mac OS
Mac OS
Map Data
Map Data
Metro
Metro
Navigation
Navigation
Need Feedback
Need Feedback
Night Mode
Night Mode
NLnet 2024-06-281
NLnet 2024-06-281
No Feature Parity
No Feature Parity
Opening Hours
Opening Hours
Outdoors
Outdoors
POI Info
POI Info
Privacy
Privacy
Public Transport
Public Transport
Raw Idea
Raw Idea
Refactoring
Refactoring
Regional
Regional
Regression
Regression
Releases
Releases
RoboTest
RoboTest
Route Planning
Route Planning
Routing
Routing
Ruler
Ruler
Search
Search
Security
Security
Styles
Styles
Tests
Tests
Track Recording
Track Recording
Translations
Translations
TTS
TTS
UI
UI
UX
UX
Walk Navigation
Walk Navigation
Watches
Watches
Web
Web
Wikipedia
Wikipedia
Windows
Windows
Won't fix
Won't fix
World Map
World Map
No milestone
No project
No assignees
2 participants
Due date
No due date set.
Dependencies
No dependencies set.
Reference: organicmaps/organicmaps-tmp#1035
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "rt-upload-metadata"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Signed-off-by: Roman Tsisyk roman@tsisyk.com
Тут будет проверка на длину?
А валидация на длину будет проходить до мержа в мастер?
Обязательно в src? Почему нельзя, например, android/metadata?
А что тут?
Это четвёртое место, где я прошу исправить. Хватит плодить копипасту плохого текста. Все комменты из другого PR валидны и здесь. Можно, кстати, просто было сделать симлинк.
Что за альфа и продакшн?
Я 100% исправлял это в эпл сторе. И ниже текст не тот, что был.
Разве bash умеет +e внутри функций? Не надо ли назад -e в конце?
Перенос строки будет игнорироваться?
Скриншоты и какие-то иконки. Вынесено в отдельную репу, чтобы не засирать общую.
Я это выгрузил из гугл стора 10 часов назад. Задачи править сами тексты в данном PR не стояло.
Симлинк - это в целом примерно то, что я хотел сделать в итоге, чтобы не копипастить.
К сожалению только на длину и будет. Остальные проверки по неведомой причине требуют ключ от аппстора.
Чек на длину стоит на каждый pull request.
Можем сделать симлинк. Плагин как-то не хотелось бы патчить, если честно.
Мы хотим шарить мету с f-droid?
Поменял в фдроид ПР. Давайте его вольем сначала, потом я эти тексты симлинкну или скопирую (как хотим?)
production - это публичное в сторе
beta - open testing
alpha - closed testing
internal - internal testing
Я пока еще разбираюсь в какой момент changelog заливается. Вроде бы с заливкой апкшки.
Ок, поменяю здесь. Может перезатерло в процессе тестирования скриптов.
Глянь код выше - пришлось python вызвать из оригинального патча. Если есть идеи на как на баше длину строки в юникоде проверить и проигнорировать "\n" в конце - расскажи, я быстрого решения не нашел. Ну разве что вызывать awk/perl, но тут уже и python можно тогда.
Можем поставить -e в конце. Хотелось, чтобы проверялось всё и падало в конце, а не на первой ошибке.
Давайте #1035 зальем, я в этом PR тогда Android попробую симликнуть или около того.
Я пишу комменты потому, что не хочу потом снова возвращаться к этой проблеме. На сайте эти штуки исправлял тоже, просто каждый раз видно, как можно сделать ещё лучше.
Надо будет разные файлы для разных билдов? А что будет триггерить билды тогда? Может давай сделаем изменение этих файлов чтобы заливало нужный билд?
Шарить не хотим, но решение прятать метаданные глубоко в исходники выглядит очень странным как минимум.
Симлинк сможет помочь, если плагин штатно не умеет.
${#var}
илиwc -m
показывают длину. Для игнора \n достаточно читать через read. При наличии верной UTF-8 локали, конечно же.Переносы строки нужно игнорить только в однострочных метаданных, конечно же.
Я к тому, что этот +e не выключит ли ошибки ПОСЛЕ вызова функции?
AppStore, GooglePlay и F-Droid теперь проверяются в Pull Requests при изменении соответствующих директорий:
https://github.com/organicmaps/organicmaps/runs/3273269781?check_suite_focus=true#step:3:1
https://github.com/organicmaps/organicmaps/runs/3273269780?check_suite_focus=true#step:3:1
AppStore, GooglePlay и F-Droid теперь проверяются в Pull Requests при изменении соответствующих директорий:
https://github.com/organicmaps/organicmaps/runs/3273269781?check_suite_focus=true#step:3:1
https://github.com/organicmaps/organicmaps/runs/3273269780?check_suite_focus=true#step:3:1
Можем сделать симлинк из
android/src/google/play/
вandroid/metadata
. Обрати внимание, что теперь естьandroid/src/google/play/
иandroid/src/fdroid/play/
- две копии, чтобы иметь разный текст.Скриншоты вынесены в отдельную репу чтобы не забить здесь всё окончательно. Скриншоты мы меняем редко, поэтому проблемы не вижу.
Я поправил это место. Гугл плей синхронизировал с последними правками F-Droid. Хочу доделать инфраструктуру для работы с метой в гите, а дальше уже можно будет править там как угодно что угодно.
Поменял здесь. Для этого и делаем в git всё!
Я переделал скрипт полностью. Игнорируется только последний "\n". Требуем его наличия в файле, т.к. это наиболее привычное поведение при работе в любом редакторе. При проверке длины не учитываем.
Я хорошенько подумал, давай пока сделаем симлинки на все идентичные поля, чтобы не усложнять себе жизнь (кроме whats new, там могут релизы слегка различаться, можно в фдроид вообще чаще фиксы для теста кидать). А как только понадобится форкнуть, просто симлинки заменим файлами.
Фейлиться из-за пропущенного конца строки тоже очень странно. Должно работать и так и так. Кейз: я создаю ПР с мобильного гитхаб редактора.
Я могу убрать эту проверку, но мне кажется более правильным форсировать наличие пустой строки вообще во всех файлах. В противном случае постоянно будем иметь левые диффы в зависимости от настроек редактора.
Сделал симлинки из фдроида в гуглплей. Надеюсь, что у них это всё будет работать.
Этот скрипт уничтожен.
@biodranik Я закончил с этим патчей в целом. Нюансы следующие:
Заливка скриншотов в AppStore возможна только при наличии черновика билда, который при этом не на ревью. Создать новый черновик пока есть существующий билд на ревью нельзя. По крайне мере в гуи я это не нашел. План - попробовать после прохождения ревью создать черновик и дернуть пайплайн. Пока что он стоит на ручном запуске. В целом думаю тупо интегрировать его в заливку билдов в iOS. Будем заливать билд, обновлять скриншоты, отправлять на ревью.
Скачивания метаданных из гуглплея очень мутное. Оно делает rm -rf на всю папку и всё выкачивает заново. Вместо .jpg почему-то оказываются .png, хотя в реальности там JPEG. Я написал скрипт, учитывающий нюансы, но юзать его надо с осторожностью.
Сделал симлинки из fdroid в gplay. Предлагаю точечно вручную рулить где нужен симлинк, а где будет свой файл.
Скриншоты в андроиде также точечно симликнуты в отдельную репу. Фдроид юзает 4 скрина из README прямо из основного репо. Гугл плей юзает скрины из отдельной репы. Изначально я пытался в build.gradle написать правильную расстановку симлинков, но там это всё делает очень неудобно и я решил проставить симлинки прямо в репе. Может не самое элегантное решение, но зато очень дуракоупорное и точно работающее.
Очень хочется закрыть эти вопросы уже. Планирую еще ребейзнуть заливку iOS поверх этого и потестировать с новым xcode проектом.
баг https://github.com/Triple-T/gradle-play-publisher/issues/992
В целом ок, но не понятно откуда вылезли изменения в twine.
Если разрешать ручной триггер, тогда можно будет выбрать явно бранч для запуска.
С ручным триггером это не нужно.
Почему закомменчено?
Зачем так долго?
@ -0,0 +15,4 @@
shell: bash
run: git submodule update --init --recursive --jobs=$(($(nproc) * 2))
- name: Checkout private keys
Выше уже есть этот шаг.
Убрать перед мержем.
Так долго?
Если работает, убирай )
@ -0,0 +3,4 @@
• Contour lines, elevation profiles, peaks and slopes
• Turn-by-turn walking, cycling and car navigation with voice guidance
• Fast offline search on the map and bookmarks
• Dark mode to protect your eyes
• Detailed offline maps with places that don't exist on other maps, thanks to OpenStreetMap
• Cycling routes, hiking trails, and walking paths
• Contour lines, elevation profiles, peaks, and slopes
• Turn-by-turn walking, cycling, and car navigation with voice guidance
• Fast offline search on the map
• Bookmarks export and import in KML/KMZ formats (GPX is planned)
• Dark Mode to protect your eyes
• Countries and regions don't take a lot of space
• Free and open-source
@ -0,0 +23,4 @@
• No push notifications
• No crapware
• N̶o̶ ̶p̶e̶s̶t̶i̶c̶i̶d̶e̶s̶
• Purely organic
Вставь зачёркивание если работает.
No pesticidesPurely organic! (только не отсюда, я в другом месте копировал)@ -0,0 +48,4 @@
### Uploading a new version to Google Play
Use [GitHub Actions](../.github/workflows/android-release.yaml).
Эти ссылки рабочие?
@ -0,0 +1,37 @@
• Detailed offline maps with places that don't exist on other maps
• Cycling routes, hiking trails, and walking paths
• Contour lines, elevation profiles, peaks, and slopes
• Turn-by-turn walking, cycling, and car navigation with voice guidance
Вставь то же что и выше, тут car замени на CarPlay
Лучше писать полный путь к keys, скрипт можно ранить из любой диры.
И тут лучше логать полный путь.
@ -0,0 +5,4 @@
set -euo pipefail
cd "$(dirname "$0")/../../android"
Это ненадёжно, лучше
SCRIPT_DIR="$( cd "$(dirname "$0")" && pwd -P )"
@ -0,0 +46,4 @@
}
check_keys
check_screenshots
Зачем это для загрузки данных из стора?
Почему закомменчено?
Список допустимых бранчей для деплоя в бету/прод всё равно ограничен в GitHub Environments. Я уберу этот хак, он только для тестирования нужен был.
Уберу это.
Не срабатывало потому что. Это всё временное, я уберу из финального патча.
@ -0,0 +15,4 @@
shell: bash
run: git submodule update --init --recursive --jobs=$(($(nproc) * 2))
- name: Checkout private keys
ок
Можем меньше поставить, не проблема.
@ -0,0 +5,4 @@
set -euo pipefail
cd "$(dirname "$0")/../../android"
Так
cd "$(dirname "$0")/../../android"
тоже самое, чтоcd "$(dirname "$0")"
внутри. Я просто делаю chdir в эту папку, сама переменная мне не нужна.Там выше chdir стоит же, чтобы везде эти пути не прописывать.
@ -0,0 +46,4 @@
}
check_keys
check_screenshots
Оно сразу в репу со скринами подпихивает скачанные файлы в нужные папки.
Артефакт, удалю.
Удалил.
Поставил 5 минут. Меньше рисковано, все же там весьма немаленкие скриншоты.
Twine попал случайно, забыл обновить сабмодуль и он добавился на git add.
#1085
Перепушал.
Для отладки полезно, т.к. не понятно, в какой папке что должно лежать в случае ошибки.
Многие комменты без ответа
@ -0,0 +26,4 @@
with open(path, 'r') as f:
text = f.read()
if text[-1] == os.linesep:
text = text[:-1]
А в сторы такие переносы строк сверх лимита стрипаются и тоже не учитываются? Проверял на макс.длине текста?
Давай по android/src/google/play/ триггерить. Ну то есть когда поменялась мета для гугл плея.
Хорошо, поменя здесь.
Хорошо, поменяю здесь.
@ -0,0 +26,4 @@
with open(path, 'r') as f:
text = f.read()
if text[-1] == os.linesep:
text = text[:-1]
Надо попробовать.
Вроде везде ответил. Поправлю оставшуюся мелочь. Посмотри что еще осталось.
Добавил $PWD в вывод ошибки. chdir убирать не хочу, неудобно в каждой строчке полный путь писать.
@ -0,0 +26,4 @@
with open(path, 'r') as f:
text = f.read()
if text[-1] == os.linesep:
text = text[:-1]
title.txt "Organic Maps Offline Hike Bike Trails & Navigation" как раз 50 символов + "\n" и всё заливается.
b02ced7f27/common/utils/src/main/kotlin/com/github/triplet/gradle/common/utils/Io.kt (L55-L56)
@ -0,0 +26,4 @@
with open(path, 'r') as f:
text = f.read()
if text[-1] == os.linesep:
text = text[:-1]
Они сами стрипают там всё.
Discussed offline. Please feel free to improve in master.