Development to release

This document is not to be used as a release procedure, it is meant as an overview of what happens from development to the creation of a release.

Overview: img

1. Commit to Github

A commit is pushed to Github (either from a development machine, or by using the "edit file" feature of Github).

2. Start of CI build

The Monterey Github repository is configured to send so-called "webhooks" to Appveyor and TravisCI (both free Continuous integration build servers).

TravisCI: img

Appveyor: img

Whenever a commit is made to the Github repository, a signal (webhook) is sent by Github to both TravisCI and Appveyor to start a build. Both TravisCI and AppVeyor clone the Github repository, runs npm install (and other commands to install the project) and then builds the installer via electron-builder. TravisCI builds the installers for Linux and MacOSX and AppVeyor builds the installer for Windows.

3. After the installer is built

As soon as TravisCI and Appveyor are done building the installer, it will try and push these installer files to a Github release. In the following screenshot, under "Downloads" you can see the installers of the v0.3.2 release. These installers were added to the v0.3.2 release by the CI servers (TravisCI and Appveyor).

img

TravisCI and Appveyor look in the package.json file for the version of Monterey it has just built. It will try and find a release on Github matching this version. If this release is marked as "Draft" it will add the installer file to the release. This is how a release gets created as "Draft": img

Important to know: The CI servers will not add installer files to a published release, only to releases marked as "draft". For example, if the CI server has built v0.4.0 and the v0.4.0 release has been published (not a draft anymore) then it will not modify the downloads of the v0.4.0 release. You would have to create a draft release of v0.4.1, update the version in package.json for the CI server to add installers to the v0.4.1 release.

The entire process has been designed and described as part of the electron-builder project, which is the piece of software that creates installers for Electron projects.

results matching ""

    No results matching ""