Repository navigation
CI CD Integration
Роман Зопиров edited this page Oct 29, 2026
·
2 revisions
OctoPublisher спроектирован для автоматизации релизов в системах непрерывной интеграции (GitHub Actions, GitLab CI, Azure DevOps).
Движок возвращает стандартизированные коды выхода (0 — успешное завершение или безопасный пропуск, 1 — фатальная ошибка, 2 — ошибка аргументов) и форматирует вывод в стандарте Fluent ANSI без эмодзи.
Включает предварительную валидацию через octopublish test, параллельную сборку артефактов и автоматическую публикацию в Google Play и Microsoft Store:
name: Релиз в магазины через OctoPublisher
on:
push:
tags:
- 'v*'
jobs:
validate:
name: Предполётная валидация
runs-on: ubuntu-latest
steps:
- name: Клонирование репозитория
uses: actions/checkout@v4
- name: Установка .NET 10
uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Установка OctoPublisher
run: dotnet tool install -g OctoPublisher
- name: Проверка структуры и ассетов Store as Code
run: octopublish test --dir packaging
publish-android:
name: Публикация Google Play Store
needs: validate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Сборка Android App Bundle
run: dotnet build -c Release -f net10.0-android
- name: Деплой через OctoPublisher
env:
PLAY_CONFIG_JSON: ${{ secrets.PLAY_CONFIG_JSON }}
run: |
octopublish playstore publish \
--bundle "./bin/Release/net10.0-android/App.aab" \
--package-name "one.obxodka.app" \
--track "production" \
--notes-dir "./packaging/whatsnew" \
--desc-dir "./packaging/store/android"
publish-windows:
name: Публикация Microsoft Store
needs: validate
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Сборка пакета MSIX
run: dotnet publish -c Release -f net10.0-windows10.0.19041.0
- name: Деплой через OctoPublisher
env:
STORE_TENANT_ID: ${{ secrets.STORE_TENANT_ID }}
STORE_CLIENT_ID: ${{ secrets.STORE_CLIENT_ID }}
STORE_CLIENT_SECRET: ${{ secrets.STORE_CLIENT_SECRET }}
STORE_APP_ID: ${{ secrets.STORE_APP_ID }}
run: |
octopublish mstore publish `
--package "./bin/Release/App.msix" `
--notes-dir "./packaging/whatsnew" `
--desc-dir "./packaging/store/windows"В настройках репозитория (Settings -> Secrets and variables -> Actions) добавьте следующие переменные:
| Имя секрета | Назначение |
|---|---|
PLAY_CONFIG_JSON |
Содержимое JSON-ключа сервисного аккаунта Google Play Console |
STORE_TENANT_ID |
Azure AD Directory (tenant) ID |
STORE_CLIENT_ID |
Azure AD Application (client) ID |
STORE_CLIENT_SECRET |
Azure AD Client Secret |
STORE_APP_ID |
Product ID приложения в Partner Center |
-
Начало работы
-
Store as Code
-
Модули магазинов
-
CI/CD и конфигурация
-
Внутреннее устройство