Настройка автоматического CI/CD для сборки десктоп-приложения

Настройка автоматического CI/CD для сборки десктоп-приложения

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка автоматического CI/CD для сборки десктоп-приложения
Средний
~3-5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1419
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    984
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1248
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    984
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    998

Настройка автоматического CI/CD для сборки десктоп-приложения

Десктоп-приложение на Electron, Tauri или Qt — это не веб-сервис: каждый релиз нужно собрать под Windows (x64, arm64), macOS (Intel, Apple Silicon), Linux (deb, rpm, AppImage). Делать это руками — значит тратить полдня на 8–10 сборок, потенциально ошибиться с подписью и вручную публиковать. Типичная ситуация: разработчик запускает сборку на своей Windows-машине, забывает подписать — и пользователи видят SmartScreen. macOS-сборку приходится делать на офисном Mac mini, который занят. Linux — отдельная история с глючными пакетами. Мы настраиваем CI/CD, который берёт эту работу на себя: от lint до публикации релиза и уведомлений в Slack. Ниже — наш типовой пайплайн и практические приёмы, проверенные на десятках проектов.

Почему CI/CD для десктопа — необходимость?

Без автоматизации каждое обновление требует ручного запуска сборщика на каждой ОС. Типичные проблемы: забыли подписать Windows-сборку — SmartScreen блокирует установку; не нотаризовали macOS — Gatekeeper не даст запустить; перепутали версию — пользователи получают старый билд. CI/CD исключает эти риски: одно нажатие на тег — и через 15–20 минут готовы все артефакты с корректной подписью. Экономия времени по сравнению с ручным процессом — до 40% на каждом релизе. Сертификат Apple Developer Program стоит $99/год, а EV Code Signing для Windows — $200–300 в год, но эти расходы окупаются за счёт доверия пользователей.

Как настроить CI/CD для десктоп-приложения за 5 шагов

  1. Проектирование пайплайна — определяем платформы, инструменты (Electron/Tauri), схему версионирования.
  2. Получение сертификатов — для Windows (Code Signing), для macOS (Developer ID Application) с последующей настройкой в GitHub Secrets.
  3. Написание конфигурации GitHub Actions — матричная сборка с кэшированием зависимостей.
  4. Интеграция подписи и нотаризации — добавление шагов для подписания исполняемых файлов.
  5. Публикация релиза и автообновление — создание GitHub Release с артефактами, настройка проверки обновлений в приложении.

Архитектура и конфигурация пайплайна

Пайплайн состоит из нескольких параллельных джоб для каждой платформы:

  • линтер и юнит-тесты (быстро на ubuntu-latest),
  • сборка под Windows (windows-latest) с подписью,
  • сборка под macOS (macos-latest) с нотаризацией,
  • сборка под Linux (ubuntu-latest),
  • публикация артефактов в GitHub Release.

Используем матричную сборку:

name: Build Desktop App on: push: tags: - 'v*' workflow_dispatch: jobs: build: strategy: fail-fast: false matrix: include: - os: windows-latest platform: win arch: x64 - os: macos-latest platform: mac arch: x64 - os: macos-latest platform: mac arch: arm64 - os: ubuntu-22.04 platform: linux arch: x64 runs-on: ${{ matrix.os }} name: Build ${{ matrix.platform }}-${{ matrix.arch }} steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Build & package (Electron) env: CSC_LINK: ${{ secrets.APPLE_CERT_P12 }} CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} APPLE_ID: ${{ secrets.APPLE_ID }} APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} WIN_CSC_LINK: ${{ secrets.WIN_CERT_P12 }} WIN_CSC_KEY_PASSWORD: ${{ secrets.WIN_CERT_PASSWORD }} run: | npx electron-builder \ --${{ matrix.platform }} \ --${{ matrix.arch }} \ --publish never - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: dist-${{ matrix.platform }}-${{ matrix.arch }} path: dist/ retention-days: 7 

Как решается проблема подписи кода?

Без подписи Windows показывает SmartScreen, macOS блокирует Gatekeeper. Для Windows используем Code Signing сертификат (EV даёт мгновенную репутацию). Для macOS — Developer ID Application сертификат из Apple Developer Program ($99/год) плюс нотаризация через Apple. Сертификаты хранятся в GitHub Secrets в виде base64-строки. Нотаризация добавляет 1–5 минут к сборке macOS.

Автообновление и версионирование

Для Electron используем electron-updater, который проверяет latest.yml в GitHub Releases при старте. Версия автоматически выставляется из тега:

// main.js const { autoUpdater } = require('electron-updater'); autoUpdater.setFeedURL({ provider: 'github', owner: 'your-org', repo: 'your-app', private: false }); app.whenReady().then(() => autoUpdater.checkForUpdatesAndNotify()); autoUpdater.on('update-downloaded', () => autoUpdater.quitAndInstall()); 

Версионирование: при пуше тега v1.2.3 CI проставляет номер в package.json командой npm version $VERSION --no-git-tag-version.

После сборки создаём черновик GitHub Release со всеми артефактами:

 publish: needs: build runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/download-artifact@v4 with: path: dist-all/ - uses: softprops/action-gh-release@v2 with: draft: true generate_release_notes: true files: | dist-all/**/*.exe dist-all/**/*.dmg dist-all/**/*.AppImage dist-all/**/*.deb dist-all/**/*.rpm 

Кэширование зависимостей

node_modules под Electron весит 500+ МБ. Кэш от actions/setup-node с cache: 'npm' сокращает установку с 3–4 минут до 30–60 секунд. Для Tauri дополнительно кэшируем Cargo с помощью Swatinem/rust-cache.

Сравнение этапов: CI/CD vs ручная сборка

Этап Ручная сборка CI/CD автоматизация
Установка зависимостей 3–4 мин на каждую ОС 30–60 сек (с кэшем)
Компиляция и упаковка 5–10 мин на ОС 8–15 мин параллельно
Подпись кода 1–2 мин на файл 1–5 мин встроено
Загрузка релиза 2–3 мин ручной заливки Автоматически 1 мин
Проверка обновлений Отсутствует Автоматически при старте

Когда стоит выбрать Tauri вместо Electron?

Tauri (Rust backend) даёт меньший размер приложения и лучшую производительность, но требует знаний Rust. Для него используем официальный tauri-action:

- name: Build Tauri app uses: tauri-apps/tauri-action@v0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} with: tagName: ${{ github.ref_name }} releaseName: 'App v__VERSION__' releaseBody: 'See CHANGELOG for details' releaseDraft: true 
Пример конфигурации для Tauri в GitHub Actions
name: Build Tauri on: push: tags: ['v*'] jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-22.04, windows-latest, macos-latest] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - uses: actions-rust-lang/setup-rust-toolchain@v1 - run: npm install - run: npx tauri build - uses: actions/upload-artifact@v4 with: path: src-tauri/target/release/bundle/ 

Сравнение ключевых характеристик:

Характеристика Electron Tauri
Размер приложения ~150–200 МБ ~5–10 МБ
Время сборки (с кэшем) 4–8 мин 8–15 мин
Сложность настройки CI Низкая Средняя
Требуемые навыки JavaScript/Node.js Rust + JavaScript

На практике Electron проще в настройке CI/CD в 2 раза быстрее, чем Tauri, если команда не владеет Rust.

Что входит в работу?

При настройке CI/CD мы предоставляем:

  • Документацию пайплайна с описанием всех шагов
  • Конфигурации для Windows, macOS и Linux
  • Настройку подписи кода (сертификаты и секреты)
  • Интеграцию автообновления
  • Инструкцию по публикации релизов
  • Неделю поддержки после внедрения

Мы — команда с 7+ годами опыта в DevOps и десктоп-разработке. За время работы настроили CI/CD для 50+ проектов, включая Electron и Tauri. Гарантируем корректную подпись и нотаризацию. Если хотите автоматизировать сборку десктоп-приложения — свяжитесь с нами для консультации. Настроим пайплайн под ключ за 1–2 дня, включая подпись и автоматическое обновление. Получите оценку вашего проекта — пишите в удобный мессенджер.

Документация GitHub Actions: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions