diff --git a/build/gulpfile.vscode.win32.js b/build/gulpfile.vscode.win32.js index 427e4e525384e438e0ead91ce17febbad7b81b98..a398076db3d5f0a0d0b6af5fc8add42115d166f3 100644 --- a/build/gulpfile.vscode.win32.js +++ b/build/gulpfile.vscode.win32.js @@ -9,12 +9,14 @@ const gulp = require('gulp'); const path = require('path'); const assert = require('assert'); const cp = require('child_process'); +const _7z = require('7zip')['7z']; const util = require('./lib/util'); const pkg = require('../package.json'); const product = require('../product.json'); const repoPath = path.dirname(__dirname); const buildPath = path.join(path.dirname(repoPath), 'VSCode-win32'); +const zipPath = path.join(repoPath, '.build', 'win32', 'archive', 'VSCode-win32.zip'); const issPath = path.join(__dirname, 'win32', 'code.iss'); const innoSetupPath = path.join(path.dirname(path.dirname(require.resolve('innosetup-compiler'))), 'bin', 'ISCC.exe'); @@ -24,9 +26,9 @@ function packageInnoSetup(iss, options, cb) { const definitions = options.definitions || {}; const keys = Object.keys(definitions); - keys.forEach(key => assert(typeof definitions[key] === 'string', `Missing value for '${ key }' in Inno Setup package step`)); + keys.forEach(key => assert(typeof definitions[key] === 'string', `Missing value for '${key}' in Inno Setup package step`)); - const defs = keys.map(key => `/d${ key }=${ definitions[key] }`); + const defs = keys.map(key => `/d${key}=${definitions[key]}`); const args = [iss].concat(defs); cp.spawn(innoSetupPath, args, { stdio: 'inherit' }) @@ -57,3 +59,14 @@ function buildWin32Setup(cb) { gulp.task('clean-vscode-win32-setup', util.rimraf('.build/win32/setup')); gulp.task('vscode-win32-setup', ['clean-vscode-win32-setup'], buildWin32Setup); + +function archiveWin32Setup(cb) { + const args = ['a', '-tzip', zipPath, buildPath, '-r']; + + cp.spawn(_7z, args, { stdio: 'inherit' }) + .on('error', cb) + .on('exit', () => cb(null)); +} + +gulp.task('clean-vscode-win32-archive', util.rimraf('.build/win32/archive')); +gulp.task('vscode-win32-archive', ['clean-vscode-win32-archive'], archiveWin32Setup); diff --git a/build/package.json b/build/package.json index 2be49f6f8cde77e90b58809653a88ce6cfb34a27..99f1261431bb46f34d34db76d1202eb11021f7a9 100644 --- a/build/package.json +++ b/build/package.json @@ -2,7 +2,7 @@ "name": "code-oss-dev-build", "version": "1.0.0", "devDependencies": { - "@types/xml2js": "^0.0.33", - "xml2js": "^0.4.17" + "@types/xml2js": "^0.0.33", + "xml2js": "^0.4.17" } } \ No newline at end of file diff --git a/build/tfs/win32/build.ps1 b/build/tfs/win32/1_build.ps1 similarity index 100% rename from build/tfs/win32/build.ps1 rename to build/tfs/win32/1_build.ps1 diff --git a/build/tfs/win32/2_package.ps1 b/build/tfs/win32/2_package.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..5be478fb5a11eeb0d667d6ff1cc13a872ecdd8fd --- /dev/null +++ b/build/tfs/win32/2_package.ps1 @@ -0,0 +1,4 @@ +. .\build\tfs\win32\lib.ps1 + +# archive +exec { & npm run gulp -- --max_old_space_size=4096 vscode-win32-archive vscode-win32-setup } \ No newline at end of file diff --git a/build/tfs/win32/3_upload.ps1 b/build/tfs/win32/3_upload.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..5e17893e6eb2ebd68150c1fdadcd402e92b36343 --- /dev/null +++ b/build/tfs/win32/3_upload.ps1 @@ -0,0 +1,20 @@ +. .\build\tfs\win32\lib.ps1 + +$Repo = "$(pwd)" +$Root = "$Repo\.." +$Exe = "$Repo\.build\win32\setup\VSCodeSetup.exe" +$Zip = "$Repo\.build\win32\archive\VSCode-win32.zip" +$Build = "$Root\VSCode-win32" + +# get version +$PackageJson = Get-Content -Raw -Path "$Build\resources\app\package.json" | ConvertFrom-Json +$Version = $PackageJson.version +$Quality = "$env:VSCODE_QUALITY" + +# npm install publish tools +pushd "$Repo\build\tfs" +exec { & npm i } +popd + +exec { & node build/tfs/out/publish.js $Quality win32 setup "VSCodeSetup-$Version.exe" $Version true $Exe } +exec { & node build/tfs/out/publish.js $Quality win32-archive archive "VSCode-win32-$Version.zip" $Version true $Zip } diff --git a/package.json b/package.json index eeb69e17492fa1ded1674cb7a54775100e02cf9e..88ff5afaed343961213dd790f1efb8df2d5828d6 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "monaco-editor-setup": "node scripts/monaco-editor-setup.js", "monaco-editor-test": "mocha --only-monaco-editor", "precommit": "node build/gulpfile.hygiene.js", - "gulp": "gulp" + "gulp": "gulp", + "7z": "7z" }, "dependencies": { "applicationinsights": "0.17.1", @@ -44,6 +45,7 @@ "yauzl": "2.3.1" }, "devDependencies": { + "7zip": "0.0.6", "@types/minimist": "^1.2.0", "@types/mocha": "^2.2.39", "@types/semver": "^5.3.30",