SourceCraft
SourceCraft — это российская платформа для разработки и сопровождения программного обеспечения, которая объединяет инструменты для работы с исходным кодом, управления версиями, тестирования, сборки, развертывания и поддержки всего жизненного цикла программных продуктов. Она предоставляет систему управления Git-репозиториями с возможностью отслеживания задач и встроенным CI/CD-пайплайном.
На платформе SourceCraft доступен инструмент, с помощью которого вы можете автоматизировать
загрузку новых версий приложения из вашего репозитория в RuStore без необходимости каждый раз
вручную загружать APK-файлы в RuStore Консоль.
Первую версию приложения необходимо загрузить вручную че рез RuStore Консоль. Все последующие версии можно публиковать автоматически через SourceCraft.
Настройка интеграции
Для интеграции вам понадобится приватный ключ для доступа к RuStore API и
настроенный CI/CD-процесс в SourceCraft. Процесс состоит из трёх основных шагов.
Шаг 1: Получите приватный ключ для доступа к RuStore API
Чтобы SourceCraft мог взаимодействовать с RuStore от вашего имени,
необходимо сгенерировать ключевую пару.
Существующие ключи можно посмотреть в RuStore Консоль →
вкладка Компания или Разработчик → API RuStore.
Обязательно сохраните сгенерированный ключ и его ID. Приватный ключ будет показан только один раз.
Шаг 2: Создайте секрет в SourceCraft для взаимодействия с RuStore API
Для безопасного использования ключей в CI/CD-процессе, их необходимо сохранить в виде
секретных переменных (Secrets) в вашем проекте на платформе SourceCraft.
- Перейдите в настройки вашего проекта в SourceCraft.
- Откройте раздел Secrets.
- Создайте две новые переменные:
RUSTORE_KEY_ID— сюда вставьте ID ключа.RUSTORE_PRIVATE_KEY— сюда вставьте приватный ключ.
Шаг 3: Настройте CI/CD-процесс
Процесс автоматизации описывается в файле .sourcecraft/ci.yaml в корне вашего репозитория.
Для публикации используется готовый «кубик» mobile-deploy.
Контроль метаданных и файлов релиза происходит через отдельную директорию. Правила формирования данной директории описаны по ссылке.
Добавьте в ваш ci.yaml следующий шаг:
- name: publish-to-rustore
env:
# --- Обязательные параметры ---
STORE: "RU_STORE"
PACKAGE_NAME: com.yourcompany.yourapp # Замените на имя пакета вашего приложения
VERSION: 1.2.3 # Укажите версию приложения
API_KEY_ID: ${{ secrets.RUSTORE_KEY_ID }} # ID ключа из Secrets
API_KEY: ${{ secrets.RUSTORE_PRIVATE_KEY }} # Приватный ключ из Secrets
# --- Необязательные параметры ---
STATUS: DRAFT # Создать черновик (по умолчанию)
PUBLISH_TYPE: AUTO # Опубликовать автоматически после модерации (по умолчанию)
image: cr.yandex/sourcecraft-cube/mobile-deploy:preview
Пример настроенного проекта представлен в официальном репозитории интеграции.
- Название версии всегда определяется значением
versionNameв вашем APK-файле. - Отмена релиза. Если версия уже отправлена на модерацию, отменить её или остановить процентную раскатку через API невозможно. Это можно сделать только вручную в RuStore Консоли.
Возможные ошибки и их решение
| Ошибка | Решение |
|---|---|
App not published yet. Publish it from console. | Вы пытаетесь автоматически опубликовать самую первую версию приложения. Первый релиз всегда нужно загружать и публиковать вручную через RuStore Консоль. |
APK/AAB contains new sensitive permissions | В новой версии приложения появились разрешения, требующие дополнительного декларирования. Такой релиз нужно опубликовать вручную через RuStore Консоль, заполнив информацию о новых разрешениях. |
APK/AAB contains illegal permissions | Приложение запрашивает разрешения, которые запрещены правилами RuStore. Удалите запрещенные разрешения из кода приложения и повторите попытку. |