Собственно все, что вам нужно, - это браузер.
Вся настройка займет около 20 минут. Я постарался написать детальные инструкции с пояснениями, поэтому не пугайтесь большого размера руководства. Оно очень подробное, что должно упрощать, а не пугать и усложнять.
- Активная учетная запись в Apple Development Program для создания и загрузки приложений. Вы можете быть зарегистрироваться как частное лицо или как часть команды с активной подпиской
- Аккаунт GitHub
- Устройство iOS с приложением TestFlight, если вы хотите тестировать свое приложение
- Аккаунт Google
Вот краткое изложение того, что мы собираемся сделать, без инструкций, просто для обзора:
- Клонировать и настроить репозиторий в GitHub
- Создать сертификаты для подписи iOS приложений и загрузить их в репозиторий вместо шаблонов
- Войдите в GitHub и нажмите кнопку ➕ в правом верхнем углу, выберите «Import repository». Мы импортируем репозиторий вместо форка, потому что так у вас будет возможность сделать вашу копию закрытой. На GitHub форки публичных репозиториев могут быть только публичными ⏯
- Вставьте адрес
https://github.com/solar2d/demo-app-store-automation.git
, выберите имя для вашего репозитория (например, Solar2Demo) и видимость. Этот конкретный проект не содержит конфиденциальной информации, или конфиденциальная информация зашифрована. Но если вы хотите расширить его и сделать свой проект на его основе, возможно, есть смысл сделать его приватным. Вы можете изменить настройки приватности позже - В репозитории в строке меню нажмите «⚙ Settings» и на боковой панели выберите «Secrets»
- Нажмите «New Repository Secret». Введите следующие пары Name и Value в соответствующие поля и нажмите «Add secret» для каждой пары ⏯:
- Name:
AppleUser
Value: ваш адрес электронной почты пользователя Apple ID - Name:
ApplePassword
Value: ваш пароль Apple ID. Скорее всего, у вас настроена двухфакторная аутентификация. В этом случае не используйте свой настоящий пароль. Перейдите на https://appleid.apple.com/ и войдите в систему. Создайте пароль для приложения «app-specific password» и используйте его
- Name:
- Если ваша учетная запись Apple включена в программу разработки как часть команды, а не как индивидуальный разработчик, вам также необходимо указать секрет
AppleTeamId
. Вы также можете указывать его как индивидуальный разработчик, но это необязательно. Чтобы получить его ⏯:- Нажмите «Actions» в строке заголовка GitHub репозитория и выберите «List Apple Teams» на боковой панели
- Нажмите кнопку «Run Workflow» и подтвердите, нажав зеленую кнопку
- Подождите. Процесс должен появиться в списке посреди окна. Через некоторое время символ рядом с ним должен стать галочкой ✓. Нажмите «List Apple Teams» рядом с галочкой
- Щелкните в боковой панели выберите «list», потом в основной области щелкните на «List Teams». Через некоторое время должна появится текстовая таблица
- Найдите желаемое короткое название команды (столбец ProviderShortname) и сохраните его как
AppleTeamId
в «Settings» → «Secrets» - После получения идентификатора группы вы можете удалить лог, щелкнув ⋯ в списке процессов во вкладке «Actions» и выбрав «Delete workflow run». Я рекомендую это сделать, поскольку логи доступны всем, кто имеет доступ к репозиторию. Эти логи могут содержать ваше настоящее имя и другую конфиденциальную информацию ⏯
- При желании вы можете изменить название вашего приложения, для этого:
- Нажмите «Code» в строке меню и перейдите в каталог «Util»
- Щелкните файл recipe.lua и нажмите кнопку с иконкой карандаша ✎, чтобы отредактировать его
- Измените имя в кавычках (Solar2Demo) в редакторе и нажмите кнопку «Commit changes»
- Я настоятельно не рекомендую использовать что-либо, кроме простой латиницы, или изменять что-либо еще в этом файле, если вы не очень уверены в том что делаете
- Войдите в веб-портал разработчика Apple: [http://developer.apple.com/account/] (http://developer.apple.com/account/)
- Выберите «Certificates, Identifiers & Profiles»
- На боковой панели выберите «Identifiers» и нажмите ➕, чтобы создать его
- Вам нужен «App ID» для типа «App»
- Заполните форму
- Description, описание, по которому вы узнаете свое приложение, например «Solar2D Demo App»
- App prefix, я обычно выбираю тот в котором есть «Team ID», но это не имеет большого значения
- Explicit bundle id, например «com.solar2d.solar2demo». Вам придется изменить название компании на другое, поскольку идентификаторы приложений должны быть уникальны
- Capabilities, возможности по умолчанию обычно подходят, вы можете отредактировать их позже (в таком случае вам придется перевыпустить профиль подготовки (provisioning profile))
Обычно в macOS эти шаги выполняются двумя щелчками во встроенной утилите KeyChain, но мы будем использовать утилиты командной строки, предоставляемые Google Cloud Shell бесплатно ⏯
- Перейдите по этой ссылке. Она должен открыть для вас новый сеанс терминала
- Выполните:
rm -f key.key distribution*; openssl req -newkey rsa:2048 -keyout key.key -out request.csr -nodes -subj "/C=CA/ST=/L=/O=/CN=Solar2D"; cloudshell dl request.csr
- Это должно вызвать загрузку файла «request.csr». Скачайте его и не закрывайте терминал, он еще понадобится
- На портале Apple Developer перейдите в раздел «Certificates, Identifiers & Profiles», Certificates
- Нажмите ➕, чтобы начать процесс создания сертификата
- Выберите «Apple Distribution»
- Нажмите «Choose File» и выберите только что скачанный «request.csr»
- Нажмите «Create» и «Download». Должен скачаться файл «distribution.cer»
- Вернитесь в окно Cloud Shell и загрузите сертификат. Вы можете сделать это, перетащив файл «distribution.cer» на консоль или выбрав его через «Upload Files» в меню ⋮ (More)
- Запустите:
openssl x509 -inform DER -in distribution.cer -out distribution.crt && openssl pkcs12 -export -out distribution.p12 -inkey key.key -in distribution.crt && cloudshell dl distribution.p12 && rm -f key.key request.csr distribution.c*
- При запросе пароля я советую использовать надежный случайно сгенерированный пароль, например, отсюда
- Сохраните пароль в репозитории GitHub как секрет
CertPassword
(мы уже добавляли секреты [выше](# secret-create)). Вам также понадобится этот пароль если вы решите использовать сертификат на настоящем маке - Скачайте пакет p12, содержащий зашифрованный сертификат и ключ подписи
- В репозитории GitHub перейдите в раздел «Code», затем щелкните каталог «Util»
- Нажмите кнопку «Add file» и выберите «Upload files»
- Выберите загруженный файл «distribution.p12» и нажмите кнопку «Commit changes»
- Перейдите на портал разработчика Apple, выберите «Profiles» и нажмите ➕
- Выберите «App Store» в разделе «Distribution»
- Выберите идентификатор приложения, который мы создали ранее (у меня com.solar2d.solar2demo)
- На следующей странице выберите сертификат, который мы только что создали. Единственный способ который я знаю чтобы их отличать - это по дате истечения годности - должен быть ровно год от даты создания
- На следующей странице введите имя «distribution» и нажмите «Generate»
- Скачайте сгенерированный профиль. Если ваш файл назван по-другому, обязательно переименуйте его в
distribution.mobileprovision
, так как инструменты сборки ожидают, что файл будет именно так называться - Загрузите файл, заменив шаблон в каталоге Util в вашем репозитории, как в конце предыдущего раздела
Нам нужно создать приложение в AppStore чтобы загружать и тестировать его
- Перейдите на сайт App Store Connect: https://appstoreconnect.apple.com/
- Войдите в систему, прочтите и примите все пользовательские соглашения
- Выберите «My Apps»
- В заголовке рядом с «Apps» нажмите кнопку ➕ и выберите «New App»
- Во всплывающем окне:
- Выберите iOS в качестве платформы
- Назовите свое приложение, например, Solar2Demo
- Выберите язык, который вам подходит, например, English (U.S.)
- Идентификатор приложения, который мы создали ранее (для меня это «Solar2D Demo App - com.solar2d.solar2demo»)
- Какой-то SKU для идентификации приложения, например Solar2Demo
- Выберите «Full Access» и нажмите «Create»
- Через несколько секунд откроется страница со списком приложений
- Это окно браузера понадобится вам позже для настройки тестировщиков, так что оставьте его открытым
На этот момент, у вас должно быть следующее:
- 4 секрета в настройках репозитория ⏯:
-
AppleUser
-
ApplePassword
-
AppleTeamId
(Необязательно) -
CertPassword
-
- В каталоге
Util
заменены 2 файла ⏯:-
Util/distribution.p12
-
Util/distribution.mobileprovision
-
Теперь самое интересное. Сборка и загрузка приложения
- Перейдите в репозиторий GitHub и выберите «Actions» в строке меню
- Выберите «Build and Deliver» на боковой панели
- Выберите «Run Workflow», оставьте все параметры по умолчанию и подтвердите, нажав зеленую кнопку
Готово!
Это запустит сборку. Сама сборка должна завершится примерно за 3-10 минут, она также загрузит созданное в App Store Connect, где оно будет проходить автоматическую обработку. Иногда это может занять довольно много времени
Сразу после того, как GitHub отправило сборку, вы можете настроить тестирование. Для этого:
- Перейдите на портал App Store Connect, выберите «My Apps» и щелкните свое приложение
- В верхнем меню выберите «TestFlight», а затем на боковой панели в разделе «Internal Group» выберите «App Store Connect Users»
- Нажмите ➕ возле «Testers» и добавьте хотя бы себя
- Вам будет отправлено электронное письмо. Откройте это письмо на iOS устройстве и нажмите на кнопку в нем. Должно запуститься приложение TestFlight и предложить вам присоединиться к тестированию приложения
Когда обработка сборки будет завершена, вы получите электронное письмо. Используйте TestFlight, чтобы установить приложение и тестируйте его на своем устройстве
Когда сборка и TestFlight уже настроены, все, что вам нужно сделать, - это закоммитить свой код, перейти к «Build and Deliver» в Actions вашего репозитория и нажать «Run Workflow»
Затем дождитесь уведомления и обновите приложение в TestFlight. Эту же сборку потом можно опубликовать в App Store
Замените проект в каталоге Project своими творениями. Как правило, рекомендуется использовать систему управления версиями, такую как Git, чтобы иметь историю изменений в вашем проекте и не потерять весь код из-за какой-то странной аварии. Вы можете клонировать репозиторий на свой компьютер, изменять содержимое, комитить изменения и создавать новые сборки. Когда обновление будет готово, тестируйте его при помощи TestFlight
Другой вариант - интегрировать скрипты в ваши существующие проекты на GitHub. Все, что вам нужно, находится в файлах .github/workflows/build.yml
и Util/build.sh
Если вам нравится этот шаблон и руководство, не забудьте отметить проекты звездочкой на GitHub:
- Игровой движок Solar2D: https://github.com/coronalabs/corona
- Этот шаблон: https://github.com/solar2d/demo-app-store-automation
Solar2D - это игровой движок с полностью открытым исходным кодом, для существования которого требуются пожертвования пользователей. Рассмотрите возможность поддержки проекта на Patreon
GitHub Actions имеют ограничения на использование, особенно для проектов в приватных репозиториях. Обязательно ознакомьтесь с ними. На данный момент минута для macOS равна 10 бесплатных минут для Linux и стоит 8 центов после превышения бесплатного лимита. Итого, в настоящее время у вас есть 200 бесплатных минут для сборки в приватных репозиториях. Этого более чем достаточно, чтобы билдить один или два раза в неделю. Вам не нужно вводить кредитную карту или что-то еще, пока у вас не закончатся бесплатные минуты, но даже если вы это сделаете, эту цену трудно превзойти
Если у вас есть какие-либо вопросы, сообщите о них на https://github.com/solar2d/demo-app-store-automation/issues
Наслаждайтесь и создавайте потрясающие игры с Solar2D!