Как создать каналы выпуска с помощью электронного / электронного строителя?

У меня есть приложение Electron, в котором я хочу представить параллельные каналы выпуска: stable, next (для первых пользователей) и dev ( для тестирования последней сборки).

У каждого из них будет отдельная ветка, при этом новые функции появятся сначала в dev, затем в next для бета-тестирования и, наконец, в stable.

Я использую electronic-builder для создания этих пакетов выпуска, и я хочу, чтобы каждый имел собственные автоматические обновления - поэтому, когда я публикую новый next релиз, все пользователи, у которых он есть, получают обновление.

Я хочу, чтобы приложения были независимыми - пользователь может установить два канала и запускать оба одновременно. У них будут разные имена и разные значки.

Я могу вручную настроить их в ветвях, но на самом деле я хочу максимально автоматизировать это - публикация из ветки next должна использовать правильное имя, значки, идентификаторы и средство обновления без риска попадания в неправильный канал.

Есть ли способ сделать это с помощью электронов или сборщиков электронов?


person Keith    schedule 24.11.2016    source источник


Ответы (2)


Это возможно с electron-builder. У меня было бы несколько конфигураций сборки, и я бы сказал electron-builder, какие из них использовать при сборке.

Например, создайте файл config/beta.json со следующей настройкой:

{
  "appId": "com.company.beta",
  "productName": "App Beta",
  "directories": {
    "buildResources": "build/beta" // directory containing your build-specific assets (e.g., beta icons - icon.icns, icon.ico & background.png)
  },
  "mac": {
    "category": "public.app-category.finance"
  },
  "win": {
    "target": [
      "nsis"
    ]
  },
  "nsis": {
    "perMachine": false
  },
  "publish": [
    {
      "provider": "s3",
      "bucket": "com-app-beta" // dedicated S3 bucket for each build
    }
  ],
}

И продублируйте config/beta.json для next.json и current.json (обязательно отредактируйте настройки соответственно).

В package.json добавьте следующие сценарии сборки (обратите внимание на --em.name=app-beta, чтобы перезаписать значение package.json "name"):

{
    "scripts": {
        "build": "build -owl --x64 --config ./config/current.json -p always --em.name=app",
        "build-beta": "build -owl --x64 --config ./config/beta.json -p always --em.name=app-beta",
        "build-next": "build -owl --x64 --config ./config/next.json -p always --em.name=app-next"
    }
}

Запустите сценарий сборки, когда будете готовы к развертыванию:

npm run build-beta
person Jon Saw    schedule 13.03.2017

В решении @Jon Saw, использующем электронное построение версии 20.15.1 и MacOS, требуется незначительное изменение, потому что параметр em недействителен:

"build-beta": "build -owl --x64 --config ./config/beta.json -p always -c.extraMetadata.name=app-beta"
person caperonce    schedule 04.07.2018
comment
Привет, спасибо за отзыв и добро пожаловать в SO. Это было бы лучше в качестве комментария к ответу Джона Со, так как так они получат уведомление. - person Keith; 05.07.2018