Skip to content
This repository has been archived by the owner on Jul 12, 2023. It is now read-only.

build a release

Marco La Rosa edited this page May 19, 2020 · 2 revisions

Requirements

In order to build a release for Windows, Mac and Linux you will need:

Building and publishing a complete release

To build a release for all platforms run from the root of the repo ./bin/publish.sh. This will:

  • ask you for your apple developer id, app specific password for describo and github personal access token.
  • ask if you want to bump the major, minor, patch numbers
  • build the 3 distributables and publish each release to the releases page of the repository

Once the release is published you then need to verify the draft and release it from the releases page of the describo github repository.

Building a release for local testing of the bundle

You can build a release for testing by simply running one of the following commands (obviously choose the one for your platform)

  • Build for linux: npm run build:linux
  • Build for mac: npm run build:mac
  • Build for windows: npm run build:win

The built executable will be in the dist folder at the top level.

Building a Linux release

There are no special requirements to building a linux bundle.

Building MacOS releases

Requirements

You will need an Apple developer certificate to sign the release as well as an app specific password. To set up the app specfic password follow the instructions at https://support.apple.com/en-au/HT204397

Ensure you have xcode installed as the notarization stage uses a tool called altool that comes with xcode full not xcode command line tools.

  • export APPLEID= < your apple developer id - you must have an apple developer cert >
  • export APPLEIDPASS= < app specific password >

DO THIS FIRST

There is a bug in electron-builder where a zip file is required for autoupdate to work but the code to generate it results in a bundle that doesn't work on Catalina! So, you need to apply the following patch to node_modules/app-builder-lib/out/targets/ArchiveTarget.js.

diff --git a/ArchiveTarget.js.orig b/ArchiveTarget.js
index 72a59df..f872592 100644
--- a/ArchiveTarget.js.orig
+++ b/ArchiveTarget.js
@@ -119,9 +119,9 @@ class ArchiveTarget extends _core().Target {
       };
       await (0, _archive().archive)(format, artifactPath, dirToArchive, archiveOptions);

-      if (this.isWriteUpdateInfo && format === "zip") {
-        updateInfo = await (0, _differentialUpdateInfoBuilder().appendBlockmap)(artifactPath);
-      }
+        //if (this.isWriteUpdateInfo && format === "zip") {
+        //updateInfo = await (0, _differentialUpdateInfoBuilder().appendBlockmap)(artifactPath);
+        //}
     }

     await packager.info.callArtifactBuildCompleted({

MacOS releases can only be built on MacOS.

Building Windows releases

Like the MacOS release a developer certificate is required to sign the app but (I think) Windows doesn't stop anyone running an unsigned application.

Also, you'll need docker installed as the Windows build happens inside a docker container.

Code signing

See https://www.electron.build/code-signing for information about code signing.