-
Notifications
You must be signed in to change notification settings - Fork 69
How releases work
Our release process is 99% automated, via Travis and electron-builder. Every time you push a new passing commit to the master
branch, Travis will build it in the after_success phase. On success thereof, it will check dat-desktop
's releases and see if there's an unpublished release matching the version number currently set in the /package.json
. If there is, it will upload the binaries (.dmg
, .zip
and .AppImage
) to it.
This publishing flow is called onTagOrDraft
and is the default flow of publishing assets with electron-builder
, as also advised in their wiki. This flow has the advantage that you get prerelease binaries for every commit - that you can share with your team at will - and to publish the release you simply hit the publish button on the release page on GitHub. It's that easy!
We run OSX and Linux on Travis, giving us the following assets:
-
.dmg
: OSX main release -
.zip
: OSX release used by the auto updater -
.AppImage
: *nix compatible release
The build is configured via the "build"
property in our /package.json
, where you can change settings like how the DMG should be built and what protocols the app listens to.
- Create a new draft prerelease for the next version. New
#master
builds will be uploaded to it - Once ready, add release notes and hit
publish
, unticking the prerelease checkbox - Create a new draft prerelease for the next version. Rinse and repeat.
Just a quick note about signing: The properly sign a release for OSX, you need to have an Apple Developer Account. There currently is @juliangruber's account information stored encrypted as a secret environment variable on Travis, which allows us to build. In case this license runs out, follow this manual on how to update it to a new account.
What if the builds fail, but you still want to release? Well first, you should fix the builds. But if that's not an option (like if there's just weird race conditions that only happen on the headless travis environment), try to hit rebuild
until they pass. If that also doesn't work, temporarily remove the test script from .travis.yml
, and now see a new build getting uploaded.