Skip to content

CI CD Integration

Роман Зопиров edited this page Oct 29, 2026 · 2 revisions

Интеграция с GitHub Actions и CI/CD

OctoPublisher спроектирован для автоматизации релизов в системах непрерывной интеграции (GitHub Actions, GitLab CI, Azure DevOps).

Движок возвращает стандартизированные коды выхода (0 — успешное завершение или безопасный пропуск, 1 — фатальная ошибка, 2 — ошибка аргументов) и форматирует вывод в стандарте Fluent ANSI без эмодзи.


Полный workflow для GitHub Actions

Включает предварительную валидацию через 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"

Секреты репозитория GitHub

В настройках репозитория (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

Clone this wiki locally