mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
commit
99b7db7106
5 changed files with 52 additions and 33 deletions
|
@ -110,6 +110,20 @@ The standard `npm run test` task runs several sub tasks and can take several min
|
|||
</dd>
|
||||
</dl>
|
||||
|
||||
#### OS packages
|
||||
|
||||
Packages are built using fpm, pleaserun, dpkg, and rpm. fpm and pleaserun can be installed using gem. Package building has only been tested on Linux and is not supported on any other platform.
|
||||
```sh
|
||||
gem install pleaserun
|
||||
gem install fpm
|
||||
npm run build:ospackages
|
||||
```
|
||||
|
||||
To specify a package to build you can add `rpm` or `deb` as an argument.
|
||||
```sh
|
||||
npm run build:ospackages -- --rpm
|
||||
```
|
||||
|
||||
### Functional UI Testing
|
||||
|
||||
#### Handy references
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
"test:server": "grunt test:server",
|
||||
"test:coverage": "grunt test:coverage",
|
||||
"build": "grunt build",
|
||||
"build:ospackages": "grunt build --os-packages",
|
||||
"start": "./bin/kibana --dev",
|
||||
"precommit": "grunt precommit",
|
||||
"karma": "karma start",
|
||||
|
|
|
@ -1,22 +1,23 @@
|
|||
module.exports = function (grunt) {
|
||||
let { resolve } = require('path');
|
||||
let { indexBy } = require('lodash');
|
||||
const { resolve } = require('path');
|
||||
const { indexBy } = require('lodash');
|
||||
|
||||
let { config } = grunt;
|
||||
let exec = require('../utils/exec');
|
||||
let targetDir = config.get('target');
|
||||
let version = config.get('pkg.version');
|
||||
let userScriptsDir = config.get('userScriptsDir');
|
||||
let servicesByName = indexBy(config.get('services'), 'name');
|
||||
const { config } = grunt;
|
||||
const exec = require('../utils/exec');
|
||||
const targetDir = config.get('target');
|
||||
const version = config.get('pkg.version');
|
||||
const userScriptsDir = config.get('userScriptsDir');
|
||||
const servicesByName = indexBy(config.get('services'), 'name');
|
||||
|
||||
grunt.registerTask('_build:osPackages', function () {
|
||||
grunt.config.get('platforms').forEach(({ name, buildDir }) => {
|
||||
// TODO(sissel): Check if `fpm` is available
|
||||
if (!(/linux-x(86|64)$/.test(name))) return;
|
||||
|
||||
let arch = /x64$/.test(name) ? 'x86_64' : 'i686';
|
||||
let fpm = args => exec('fpm', args);
|
||||
const arch = /x64$/.test(name) ? 'x86_64' : 'i686';
|
||||
const fpm = args => exec('fpm', args);
|
||||
|
||||
let args = [
|
||||
const args = [
|
||||
'--force',
|
||||
'--package', targetDir,
|
||||
'-s', 'dir', // input type
|
||||
|
@ -27,23 +28,23 @@ module.exports = function (grunt) {
|
|||
'--config-files', '/opt/kibana/config/kibana.yml'
|
||||
];
|
||||
|
||||
let files = buildDir + '/=/opt/kibana';
|
||||
const files = buildDir + '/=/opt/kibana';
|
||||
const sysv = servicesByName.sysv.outputDir + '/etc/=/etc/';
|
||||
const systemd = servicesByName.systemd.outputDir + '/lib/=/lib/';
|
||||
|
||||
//Manually find flags, multiple args without assignment are not entirely parsed
|
||||
var flags = grunt.option.flags().join(',');
|
||||
|
||||
const buildDeb = !!flags.match('deb');
|
||||
const buildRpm = !!flags.match('rpm');
|
||||
const noneSpecified = !buildRpm && !buildDeb;
|
||||
|
||||
grunt.file.mkdir(targetDir);
|
||||
|
||||
// kibana.rpm and kibana.deb
|
||||
if (/linux-x(86|64)$/.test(name)) {
|
||||
let sysv = servicesByName.sysv.outputDir + '/etc/=/etc/';
|
||||
let systemd = servicesByName.systemd.outputDir + '/lib/=/lib/';
|
||||
fpm(args.concat('-t', 'rpm', '-a', arch, '--rpm-os', 'linux', files, sysv, systemd));
|
||||
if (buildDeb || noneSpecified) {
|
||||
fpm(args.concat('-t', 'deb', '-a', arch, files, sysv, systemd));
|
||||
return;
|
||||
}
|
||||
|
||||
// kibana.pkg
|
||||
if (/darwin-x(86|64)$/.test(name)) {
|
||||
let launchd = servicesByName.launchd.outputDir + '/=/';
|
||||
fpm(args.concat('-t', 'osxpkg', '-a', arch, files, launchd));
|
||||
return;
|
||||
if (buildRpm || noneSpecified) {
|
||||
fpm(args.concat('-t', 'rpm', '-a', arch, '--rpm-os', 'linux', files, sysv, systemd));
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
module.exports = function createServices(grunt) {
|
||||
var { resolve } = require('path');
|
||||
|
||||
let exec = require('../utils/exec');
|
||||
let userScriptsDir = grunt.config.get('userScriptsDir');
|
||||
const { resolve } = require('path');
|
||||
const { appendFileSync } = require('fs');
|
||||
const exec = require('../utils/exec');
|
||||
const userScriptsDir = grunt.config.get('userScriptsDir');
|
||||
|
||||
grunt.registerTask('_build:pleaseRun', function () {
|
||||
// TODO(sissel): Detect if 'pleaserun' is found, and provide a useful error
|
||||
|
@ -25,6 +25,6 @@ module.exports = function createServices(grunt) {
|
|||
|
||||
grunt.file.mkdir(userScriptsDir);
|
||||
exec('please-manage-user', ['--output', userScriptsDir, 'kibana']);
|
||||
|
||||
appendFileSync(resolve(userScriptsDir, 'installer.sh'), 'chown kibana /opt/kibana/optimize');
|
||||
});
|
||||
};
|
||||
|
|
|
@ -12,18 +12,21 @@ module.exports = function (grunt) {
|
|||
return resolve(rootPath, file);
|
||||
});
|
||||
|
||||
let ln = (source, link) => exec('ln', ['-s', source, link]);
|
||||
//We don't want to build os packages with symlinks
|
||||
let transferFiles = (source, link) => grunt.option('os-packages')
|
||||
? exec('cp', ['-r', source, link])
|
||||
: exec('ln', ['-s', source, link]);
|
||||
|
||||
grunt.config.get('platforms').forEach(function (platform) {
|
||||
grunt.file.mkdir(platform.buildDir);
|
||||
|
||||
// link all files at the root of the build
|
||||
buildFiles.forEach(function (source) {
|
||||
ln(source, resolve(platform.buildDir, basename(source)));
|
||||
transferFiles(source, resolve(platform.buildDir, basename(source)));
|
||||
});
|
||||
|
||||
// link the node modules
|
||||
ln(platform.nodeDir, resolve(platform.buildDir, 'node'));
|
||||
transferFiles(platform.nodeDir, resolve(platform.buildDir, 'node'));
|
||||
});
|
||||
});
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue