mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 09:19:04 -04:00
Add create_services
grunt task.
This task will generate service definitions that will help run Kibana on different platforms. At this time, the following service platforms are supported: sysv init, upstart, launchd, systemd. The files are generated by the `pleaserun` program and are written to build/dist/services/[platform]/...
This commit is contained in:
parent
598282b05f
commit
fd2fb52f41
2 changed files with 38 additions and 0 deletions
|
@ -16,6 +16,7 @@ module.exports = function (grunt) {
|
|||
|
||||
nodeVersion: '0.10.35',
|
||||
platforms: ['darwin-x64', 'linux-x64', 'linux-x86', 'windows'],
|
||||
services: [ [ 'launchd', '10.9'], [ 'upstart', '1.5'], [ 'systemd', 'default'], [ 'sysv', 'lsb-3.1' ] ],
|
||||
|
||||
unitTestDir: __dirname + '/test/unit',
|
||||
testUtilsDir: __dirname + '/test/utils',
|
||||
|
|
37
tasks/create_services.js
Normal file
37
tasks/create_services.js
Normal file
|
@ -0,0 +1,37 @@
|
|||
var child_process = require('child_process');
|
||||
var Promise = require('bluebird');
|
||||
var join = require('path').join;
|
||||
var mkdirp = Promise.promisifyAll(require('mkdirp'));
|
||||
var execFile = Promise.promisify(child_process.execFile);
|
||||
|
||||
function createServices(grunt) {
|
||||
grunt.registerTask('create_services', function () {
|
||||
var done = this.async();
|
||||
var target = grunt.config.get('target');
|
||||
var distPath = join(grunt.config.get('build'), 'dist');
|
||||
var services = grunt.config.get('services');
|
||||
|
||||
var createService = function (arg) {
|
||||
var service = arg[0];
|
||||
var service_version = arg[1];
|
||||
var options = { cwd: distPath };
|
||||
var output = join(distPath, 'services', service);
|
||||
var pleaserun_args = ['--install', '--no-install-actions',
|
||||
'--install-prefix', output, '--overwrite',
|
||||
'--user', 'kibana',
|
||||
'-p', service, '-v', service_version,
|
||||
'/opt/kibana/bin/kibana'];
|
||||
|
||||
return mkdirp.mkdirpAsync(target)
|
||||
.then(function (arg) {
|
||||
return execFile('pleaserun', pleaserun_args, options);
|
||||
}, function (err) { console.log('pleaserun failed: ' + err + '. Args: ' + pleaserun_args.join(' ')); });
|
||||
};
|
||||
|
||||
// TODO(sissel): Detect if 'pleaserun' is found, and provide a useful error
|
||||
// to the user if it is missing.
|
||||
Promise.map(services, createService).finally(done);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = createServices;
|
Loading…
Add table
Add a link
Reference in a new issue