Beta versions support: SxS support, in-app env/instance display (#1606)

* Script for beta config; unique data dir, in-app env/type display

To release a beta build, increment the version and add -beta-N to the
end, then go through all the standard release activities.

The prepare-build npm script then updates key bits of the package.json
to ensure that the beta build can be installed alongside a production
build. This includes a new name ('Signal Beta') and a different location
for application data.

Note: Beta builds can be installed alongside production builds.

As part of this, a couple new bits of data are shown across the app:

- Environment (development or test, not shown if production)
- App Instance (disabled in production; used for multiple accounts)

These are shown in:

- The window title - both environment and app instance. You can tell
  beta builds because the app name, preceding these data bits, is
  different.
- The about window - both environment and app instance. You can tell
  beta builds from the version number.
- The header added to the debug log - just environment. The version
  number will tell us if it's a beta build, and app instance isn't
  helpful.

* Turn on single-window mode in non-production modes

Because it's really frightening when you see 'unable to read from db'
errors in the console.

* aply.sh: More instructions for initial setup and testing

* Gruntfile: Get consistent with use of package.json datas

* Linux: manually update desktop keys, since macros not available
This commit is contained in:
Scott Nonnenberg 2017-10-30 13:57:13 -07:00 committed by GitHub
parent a3fbb9a6aa
commit c94d4efd18
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 158 additions and 34 deletions

View file

@ -1,4 +1,5 @@
var path = require('path');
var packageJson = require('./package.json');
module.exports = function(grunt) {
'use strict';
@ -204,23 +205,23 @@ module.exports = function(grunt) {
},
'test-release': {
osx: {
archive: 'mac/Signal.app/Contents/Resources/app.asar',
appUpdateYML: 'mac/Signal.app/Contents/Resources/app-update.yml',
exe: 'mac/Signal.app/Contents/MacOS/Signal'
archive: 'mac/' + packageJson.productName + '.app/Contents/Resources/app.asar',
appUpdateYML: 'mac/' + packageJson.productName + '.app/Contents/Resources/app-update.yml',
exe: 'mac/' + packageJson.productName + '.app/Contents/MacOS/' + packageJson.productName
},
mas: {
archive: 'mas/Signal.app/Contents/Resources/app.asar',
appUpdateYML: 'mac/Signal.app/Contents/Resources/app-update.yml',
exe: 'mas/Signal.app/Contents/MacOS/Signal'
exe: 'mas/' + packageJson.productName + '.app/Contents/MacOS/' + packageJson.productName
},
linux: {
archive: 'linux-unpacked/resources/app.asar',
exe: 'linux-unpacked/signal-desktop'
exe: 'linux-unpacked/' + packageJson.name
},
win: {
archive: 'win-unpacked/resources/app.asar',
appUpdateYML: 'win-unpacked/resources/app-update.yml',
exe: 'win-unpacked/Signal.exe'
exe: 'win-unpacked/' + packageJson.productName + '.exe'
}
},
gitinfo: {} // to be populated by grunt gitinfo
@ -273,7 +274,6 @@ module.exports = function(grunt) {
require('mkdirp').sync('release');
var fs = require('fs');
var done = this.async();
var package_json = grunt.config.get('pkg');
var gitinfo = grunt.config.get('gitinfo');
var https = require('https');
@ -281,7 +281,7 @@ module.exports = function(grunt) {
var keyBase = 'WhisperSystems/Signal-Desktop';
var sha = gitinfo.local.branch.current.SHA;
var files = [{
zip: 'signal-desktop-' + package_json.version + '.zip',
zip: packageJson.name + '-' + packageJson.version + '.zip',
extractedTo: 'linux'
}];
@ -451,7 +451,7 @@ module.exports = function(grunt) {
return app.client.getTitle();
}).then(function (title) {
// Verify the window's title
assert.equal(title, 'Signal');
assert.equal(title, packageJson.productName);
console.log('title ok');
}).then(function () {
assert(app.chromeDriver.logLines.indexOf('NODE_ENV ' + environment) > -1);