mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-21 01:25:37 -05:00
* add remote build to the pipeline * add a separte compile step * fix darwin build * add linux container and fix docker creation * fix distro * remove system install and add xvfb start * distro * add logic to only run tests on hosted machine * fix yml * fix yml * add linux docker container * fix docker file * fixdocker * fix darwin * fix linux build * add cache salt to npm cache * intentially ignore kerberos binaries * disable docker for now * remove vsix from win32 * fix linxu and win32 * fix linux and win32 * fix linux and win32 * fix linux * maybe fix win32 * fix linux * fix linux image; disable server package for noe * fix minimatch for win32 test * fix linux build * add back in docker * fix test * use tmp directory insteado workspace * change name of docker image * try a differnt folder * fix download * add a git clean step * bump cache * fix issues with builidng * readd windows build, revert signing changes * simplify win32 server packaage * some more optimizations * use decompress task * add back in install for windows test * fix linux build * add integration test to bat file * make platform the same * add copy extension to windows test * revert tests back * fix vsix drop aquasition * inital changes * fix download * fix dependent on for release * just downlaod everything which makes it easier * setup pipeline artifacts * more clean up * fix linux * add logic to install extensions for integration tests * fix extension install * fix build failures * fix some issues * fix darwin drop * change linux build copy to js * fix darwin archive * fix copy artifacts and use it for windows * use for darinw * fix darwin * ad dep on linux * fix win32 * fix darwin * fix copy artifacts * mkdir p darwin * fix copy * add error handler * add more binaries * add more binaries * fix archive path on linux * add more options to integration extension install * add more binaries * add verbose to installer copy * fix ip rate issues * fix bat file for including extensions * move echo * add windows test condition * use powershell cmdlet rather than cp * remove verbose * remove compiling of extensions * fix pipelines * update docker location * fix copy item * fix signing on win32 * fix locations * move back to using cp * ensure the docker folder exists * test a createdrop script on darwin * wip * fix copy * add drop for linux * fix builds * fix drop * fix docker on linx * fix darwin * lets try this again * fix linux drop * i guess try the copy files task * add create drop for win32 * ensure windows drop location exists * fix extension install * just use mkdir * add better logic for installing extensions * ignore errors? * try force * testing * ok this should work * use production cli * fix liveshare vscodeignore * fix integration test script * revert changes to integration tests to fix them * try newitem * remove exec * explicitly clear last exit code * fix test build * revert publish scripts * add version json * fix tests * add back sources creation * this is stupid * fix clean positioning * add version information to drop * fix locations of artifacts in publush scripts
168 lines
5.6 KiB
JavaScript
168 lines
5.6 KiB
JavaScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
'use strict';
|
|
const gulp = require('gulp');
|
|
const util = require('./lib/util');
|
|
const tsfmt = require('typescript-formatter');
|
|
const es = require('event-stream');
|
|
const filter = require('gulp-filter');
|
|
const del = require('del');
|
|
const serviceDownloader = require('service-downloader').ServiceDownloadProvider;
|
|
const platform = require('service-downloader/out/platform').PlatformInformation;
|
|
const path = require('path');
|
|
const ext = require('./lib/extensions');
|
|
const task = require('./lib/task');
|
|
const glob = require('glob');
|
|
const vsce = require('vsce');
|
|
const mkdirp = require('mkdirp');
|
|
|
|
gulp.task('clean-mssql-extension', util.rimraf('extensions/mssql/node_modules'));
|
|
gulp.task('clean-credentials-extension', util.rimraf('extensions/credentials/node_modules'));
|
|
|
|
gulp.task('fmt', () => formatStagedFiles());
|
|
const formatFiles = (some) => {
|
|
const formatting = es.map(function (file, cb) {
|
|
|
|
tsfmt.processString(file.path, file.contents.toString('utf8'), {
|
|
replace: true,
|
|
tsfmt: true,
|
|
tslint: true,
|
|
tsconfig: true
|
|
// verbose: true
|
|
}).then(result => {
|
|
console.info('ran formatting on file ' + file.path + ' result: ' + result.message);
|
|
if (result.error) {
|
|
console.error(result.message);
|
|
}
|
|
cb(null, file);
|
|
|
|
}, err => {
|
|
cb(err);
|
|
});
|
|
});
|
|
return gulp.src(some, {
|
|
base: '.'
|
|
})
|
|
.pipe(filter(f => !f.stat.isDirectory()))
|
|
.pipe(formatting);
|
|
|
|
};
|
|
|
|
const formatStagedFiles = () => {
|
|
const cp = require('child_process');
|
|
cp.exec('git diff --name-only', {
|
|
maxBuffer: 2000 * 1024
|
|
}, (err, out) => {
|
|
if (err) {
|
|
console.error();
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
|
|
const some = out
|
|
.split(/\r?\n/)
|
|
.filter(l => !!l)
|
|
.filter(l => l.match(/.*.ts$/i));
|
|
|
|
formatFiles(some).on('error', err => {
|
|
console.error();
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|
|
});
|
|
|
|
cp.exec('git diff --cached --name-only', {
|
|
maxBuffer: 2000 * 1024
|
|
}, (err, out) => {
|
|
if (err) {
|
|
console.error();
|
|
console.error(err);
|
|
process.exit(1);
|
|
}
|
|
|
|
const some = out
|
|
.split(/\r?\n/)
|
|
.filter(l => !!l)
|
|
.filter(l => l.match(/.*.ts$/i));
|
|
|
|
formatFiles(some).on('error', err => {
|
|
console.error();
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|
|
});
|
|
};
|
|
|
|
function installService() {
|
|
let config = require('../extensions/mssql/config.json');
|
|
return platform.getCurrent().then(p => {
|
|
let runtime = p.runtimeId;
|
|
// fix path since it won't be correct
|
|
config.installDirectory = path.join(__dirname, '../extensions/mssql/src', config.installDirectory);
|
|
var installer = new serviceDownloader(config);
|
|
let serviceInstallFolder = installer.getInstallDirectory(runtime);
|
|
console.log('Cleaning up the install folder: ' + serviceInstallFolder);
|
|
return del(serviceInstallFolder + '/*').then(() => {
|
|
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
|
return installer.installService(runtime);
|
|
}, delError => {
|
|
console.log('failed to delete the install folder error: ' + delError);
|
|
});
|
|
});
|
|
}
|
|
|
|
gulp.task('install-sqltoolsservice', () => {
|
|
return installService();
|
|
});
|
|
|
|
gulp.task('install-ssmsmin', () => {
|
|
const config = require('../extensions/admin-tool-ext-win/config.json');
|
|
const runtime = 'Windows_64'; // admin-tool-ext is a windows only extension, and we only ship a 64 bit version, so locking the binaries as such
|
|
// fix path since it won't be correct
|
|
config.installDirectory = path.join(__dirname, '..', 'extensions', 'admin-tool-ext-win', config.installDirectory);
|
|
var installer = new serviceDownloader(config);
|
|
const serviceInstallFolder = installer.getInstallDirectory(runtime);
|
|
const serviceCleanupFolder = path.join(serviceInstallFolder, '..');
|
|
console.log('Cleaning up the install folder: ' + serviceCleanupFolder);
|
|
return del(serviceCleanupFolder + '/*').then(() => {
|
|
console.log('Installing the service. Install folder: ' + serviceInstallFolder);
|
|
return installer.installService(runtime);
|
|
}, delError => {
|
|
console.log('failed to delete the install folder error: ' + delError);
|
|
});
|
|
});
|
|
|
|
const root = path.dirname(__dirname);
|
|
|
|
gulp.task('package-external-extensions', task.series(
|
|
task.define('bundle-external-extensions-build', () => ext.packageExternalExtensionsStream().pipe(gulp.dest('.build/external'))),
|
|
task.define('create-external-extension-vsix-build', () => {
|
|
const vsixes = glob.sync('.build/external/extensions/*/package.json').map(manifestPath => {
|
|
const extensionPath = path.dirname(path.join(root, manifestPath));
|
|
const extensionName = path.basename(extensionPath);
|
|
return { name: extensionName, path: extensionPath };
|
|
}).map(element => {
|
|
const pkgJson = require(path.join(element.path, 'package.json'));
|
|
const vsixDirectory = path.join(root, '.build', 'extensions');
|
|
mkdirp.sync(vsixDirectory);
|
|
const packagePath = path.join(vsixDirectory, `${pkgJson.name}-${pkgJson.version}.vsix`);
|
|
console.info('Creating vsix for ' + element.path + ' result:' + packagePath);
|
|
return vsce.createVSIX({
|
|
cwd: element.path,
|
|
packagePath: packagePath,
|
|
useYarn: true
|
|
});
|
|
});
|
|
|
|
return Promise.all(vsixes);
|
|
})
|
|
));
|
|
|
|
gulp.task('package-rebuild-extensions', task.series(
|
|
task.define('clean-rebuild-extensions', () => ext.cleanRebuildExtensions('.build/extensions')),
|
|
task.define('rebuild-extensions-build', () => ext.packageLocalExtensionsStream().pipe(gulp.dest('.build'))),
|
|
));
|