Для более видимости публиковать это на Dev.to. оригинал Статья размещена на моем Веб -сайт Анкет Давайте начнем:)
Были ли вы в ситуации, когда вы хотите проверить функцию из конкретной ветви? Но у вас нет окружающей среды в местном уровне? Или вы где -то нет и у вас нет доступа к компьютеру? Или ваш клиент/QA все время пингирует, чтобы предоставить APK конкретную конфигурацию и функции?
В этом блоге мы поговорим о том, как мы можем решить задачи выше, вручную генерируя APK, используя действия GitHub. Итак, начнем.
- Действия GitHub.
- Основное понимание сборки Android с использованием Градл Анкет
- Основной из Bash сценарий.
Проблема может отличаться в зависимости от вашей рабочей среды, размера команды и клиентов. Давайте попробуем понять каждого из них.
- Инди -разработчик:
- Если вы инди -разработчик, работающий исключительно над проектом, то вы можете быть поражены этим подходом. Причина может быть
- Меньше зависимостей людей на вас.
- У вас есть среда в вашем местном уровне.
- Никто не просит APK тестировать ежедневно.
- Вы можете пропустить всю эту статью. Но хорошо знать об этом подходе, потому что в конечном итоге размер вашей команды будет расти, и вам нужно быть хорошо подготовленным для него.
- Если вы инди -разработчик, работающий исключительно над проектом, то вы можете быть поражены этим подходом. Причина может быть
- Настройка среды:
- Скажем, наш нетехнический клиент хочет проверить функцию в среде, которую мы подтолкнули в определенную ветвь. Есть два решения для этого.
- Позвоните разработчику и попросите APK с необходимыми параметрами.
- Настройте среду Android в локальной машине клиента, ознакомьтесь с ветвью, настройте параметры и создайте APK. (Я не думаю, что нетехническому клиенту понравится это решение)
- Мы можем избежать этого, предоставив графический интерфейс для создания APK с настраиваемыми параметрами. Это именно то, что делает пользовательский интерфейс рабочего процесса. ( Подробнее об этом следующем разделе)
- Та же самая проблема, упомянутая выше, также может быть применена к QA. Основное различие в том, что QA технически звучит. Они могут получить APK, используя GitHub Trigger, например Push, Pull_Request и т. Д. Проблема здесь заключается в том, почему создать этот ненужный триггер запроса Push and Pull, чтобы просто генерировать APK. Это загромождает историю GIT и ненужные запросы PR.
- Скажем, наш нетехнический клиент хочет проверить функцию в среде, которую мы подтолкнули в определенную ветвь. Есть два решения для этого.
- Конфигурируемость:
- Возможность создания APK с настроенными параметрами — это то, что я нахожу очень полезным. Наиболее распространенные параметры, которые мы настраиваем в приложениях.
- API конечные точки
- Секретные/доступ к клавишам.
- Другие бизнес -параметры, такие как пороговые значения, количество попыток Re. и т.п.
- Возможность создания APK с настроенными параметрами — это то, что я нахожу очень полезным. Наиболее распространенные параметры, которые мы настраиваем в приложениях.
Github Actions предоставляет различные события триггеров для запуска вашего рабочего процесса. Ниже приведен пример некоторых из спусковых событий, таких как выдвижение коммита в основной ветви, создание запросов на притяжение, теги и т. Д.
on: # Trigger the workflow on push or pull request, # but only for the main branch push: branches: - main pull_request: branches: - main branches: # Push events on main branch - main # Push events to branches matching refs/heads/mona/octocat - 'mona/octocat' # Push events to branches matching refs/heads/releases/10 - 'releases/**' tags: - v1 # Push events to v1 tag - v1.*
Чтобы запустить событие вручную, действия GitHub добавили новое событие триггера под названием workflow_dispatch. Ниже приведен пример кода и пользовательского интерфейса. (Подробнее в следующем разделе)
on: workflow_dispatch: inputs: logLevel: description: 'Log level' required: true default: 'warning' tags: description: 'Test scenario tags'
Сначала нам нужно настроить настраиваемые параметры в Android, а затем мы можем обновить эти параметры, используя входы GitHub в рабочем процессе. Так что начнется с Android сначала.
Настраиваемые свойства в Android.
- Нам нужно настроить настраиваемые параметры в файле. В этом случае мы вкладываем это в
local.properties
Файл, который мы обычно Не регистрируйтесь ВК. Примечание: Это может быть любой файл. Мы просто чтобы указать на этот файл вBuild.Gradle
Анкет Создать или обновить
local.properties
файл как это АнкетОбновление
Build.Gradle
в приложении, как это АнкетМы можем направить локальные свойства, используя
BUILDCONFIG
в этом приложении, как это.Примечание: Иногда
local.properties
Не создавайтеBUILDCONFIG
на синхронизации. Он будет создан, когда мы строим APK. РефериВывод будет выглядеть так, когда мы запускаем APK.
Если вы сталкиваетесь с какими -либо проблемами. Вы можете проверить приложение для примера рабочего процесса Здесь Анкет Для установки local.properties Пожалуйста, проверьте это Mindork блог.
Настройка GitHub Workflow
Мы создаем файл yaml внутри .github/Workflow
папка. Чтобы запустить рабочий процесс вручную, мы будем использовать workflow_dispatch
как триггер. Это покажет пользовательский интерфейс рабочего процесса, который мы видели выше.
name: Manual Generate APK on: workflow_dispatch: /....
Чтобы показать значения конфигурации ввода, мы используем входные данные здесь. baseurl
это ключ ввода, который мы будем использовать для чтения значения.
name: Manual Generate APK on: workflow_dispatch: inputs: baseUrl: description: 'Base URL' required: true default: 'https://production.example.com/api/v1' mapKey: description: 'Map Key' required: true default: 'production_sample_key' reAttempt: description: 'Number of re-attempts' default: '3' thresholdValue: description: 'Threshold value' default: '0.05'
Настройка Требуется
параметры как Верно
Покажите звездочку, указывающую на обязательное поле. Описание
показано как имя поля в пользовательском интерфейсе. по умолчанию
Парам установит значение по умолчанию в поле ввода.
Мы добавим команду, чтобы построить APK.
- name: Assemble app debug APK run: bash ./gradlew assembleDebug --stacktrace
Настройка скрипта Bash
Если мы попытаемся запустить этот рабочий процесс сейчас, он потерпит неудачу с ошибкой local.properties не найден. Это потому, что мы не зарегистрировали этот файл в наших венчурных капиталах. Мы можем исправить это, создав Local.properties на лету при выполнении рабочего процесса GitHub. Мы можем сделать это, запустив команду Linux в рабочем процессе, который создает local.properties
Файл со всеми значениями конфигурации.
Лучше обернуть эту последовательность команды Linux в сценарий Bash. Это позволит избежать кода беспорядка в рабочем процессе и обеспечить большую гибкость для обновления сценария.
Теперь мы создадим и зарегистрируемся в файле сценария Bash update_properties.sh
в капельнице, которые будут выглядеть.
#!/bin/bash touch local.properties echo "BASE_URL=\"$1\"" >> local.properties echo "MAP_KEY=\"$2\"" >> local.properties echo "RETRY_ATTEMPTS=$3" >> local.properties echo "THRESHOLD_VALUE=$4" >> local.properties
1, 2, 3, 3 долл. США и 4 долл. США являются 4 аргументами, которые будут переданы в сценарий из значений входов.
Нам нужно запустить сценарий Bash с входными значениями, прежде чем построить APK. Мы получаем эти значения, используя github.event.inputs. {key}
характеристики. Вы можете найти исходный файл здесь .
- name: Print Params Values run: | bash update_properties.sh ${{ github.event.inputs.baseUrl }} ${{ github.event.inputs.mapKey }} ${{ github.event.inputs.reAttempt }} ${{ github.event.inputs.thresholdValue }} - name: Assemble app debug APK run: bash ./gradlew assembleDebug --stacktrace
Забавный факт: я смог запустить сценарий после 17 неудачных попыток. Так что не волнуйтесь, если сценарий не работает в первый раз. Держите гугл, как я это сделал 😂
- Теперь мы можем запустить рабочий процесс с вкладки Ai in Github Action.
- Если вы хотите обновить существующее
local.properties
Или любой другой файл, который вы уже используете, вам нужно изменить свой скрипт. Пожалуйста, проверьте это ветвь Например.
- Пользовательский интерфейс Workflow не появится, если рабочий процесс будет выдвинут в отдельную ветку, но не в
Главный/Мастер
ответвляться. Рабочий процесс будет виден только в том случае, если его подтолкнут кГлавный/Мастер
ответвляться. - Он не будет работать на ветке, в которой нет рабочего процесса. Пользовательский интерфейс будет выглядеть так.
- Текст Linux замените
sed -i
Команда будет работать над действием GitHub, которое работает на Linux. Для Mac нам нужно использоватьsed -i ""
- Иногда
local.properties
Не создавайтеBUILDCONFIG
на синхронизации. Он будет создан, когда мы строим APK. Рефери
Запуск GitHub вручную был тем, о чем спросил разработчик, когда было первоначально начато действие. Потому что он обеспечивает большую гибкость и простоту использования, особенно для клиентов/QA. У них также есть API, чтобы вызвать этот рабочий процесс, который открывает дверь для большей автоматизации.
В случае любого вопроса и проблемы вы можете связаться со мной в Twitter Анкет Оставайтесь в курсе, подписываясь на мой блог. Спасибо, что нашли время прочитать эту статью. Если вам нравится эта статья, пожалуйста, нравится и поделитесь ею с друзьями/коллегами и распространите информацию.
- https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/
- https://blog.mindorks.com/using-local-properties-file-to-avoid-api-keys-check-in-into-version-control-system
- https://stackoverflow.com/questions/16745988/sed-command-with-i-option-in-place-editing-works-fine-on-ubuntu-but-not-mac
- https://abelsquidhead.com/index.php/2020/07/29/manually-trigger-actions-workflow-in-github-how-did-i-not-know-about-this/
- https://github.community/t/workflow-dispatch-event-not-working/128856
Оригинал: «https://dev.to/burhanrashid52/manually-generate-apk-using-github-actions-2c64»