Я не могу понять, почему я могу запустить задание сборки grunt dev на моем локальном компьютере, но на сервере Jenkins происходит сбой с этой ошибкой:
Loading "Gruntfile.js" tasks
SyntaxError: Unexpected token ...
Обратите внимание, что это Раньше Дженкинс каждые 10 минут работал нормально, пока однажды не перестал работать. Интересно, обновилось ли что-то еще, что теперь ломает сборку. Тот факт, что я могу выполнить ту же самую грубую работу на моей локальной машине, OK говорит о том, что что-то было обновлено на Jenkins, которое теперь нарушает сборку только на Jenkins.
Файл Gruntfile. js выглядит хорошо для меня :
var argv = require('yargs')
.usage('$0 <cmd> [args]')
.string('env')
.required('env')
.choices('env', ['development', 'staging'])
.help()
.argv;
module.exports = function(grunt) {
var path = require('path');
var fs = require('fs');
var child_process = require('child_process');
grunt.log.writeln('Using ' + argv.env);
// Load plugins
grunt.loadTasks('grunt/tasks');
// Display execution time of grunt tasks
require('time-grunt')(grunt);
var buildId;
// Load all grunt configs
require('load-grunt-config')(grunt, {
configPath: path.join(process.cwd(), 'grunt/config'),
postProcess: function(config) {
// Modify path to the configuration file, without altering core grunt scripts.
config.properties.configFile = 'build/config.' + argv.env + '.json';
// Figure out version number
// Get build sequence id
var sequence = fs.readFileSync('../.buildsequence', 'utf8').replace(/[^0-9a-zA-Z]/g, '');
var build = process.env.BUILD_NUMBER.replace(/[^0-9a-f]/g, '');
// Get short git hash.
var hash = child_process.execSync('git describe --always').toString().toLowerCase().replace(/[^0-9a-f]/g, '');
grunt.log.writeln('Git hash ' + hash);
buildId = sequence + '-' + build + '-' + hash;
}
});
grunt.log.writeln();
grunt.log.writeln('********************************************');
grunt.log.writeln(' -- Initializing...');
// Load and parse configuration file(s)
require('./grunt/lib/config/loader')(grunt);
// Map legacy config to current format
require('./grunt/lib/config/mapper')(grunt);
// Normalize config (default values, correct format)
require('./grunt/lib/config/normalizer')(grunt);
// Avoids DEPTH_ZERO_SELF_SIGNED_CERT error for self-signed certs where hostname/IP do not match
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
var settings = grunt.config.get('settings');
settings.project.build = buildId;
grunt.config.set('settings', settings);
//Output
grunt.log.write(' -- Initialization '); grunt.log.ok();
grunt.log.writeln();
grunt.log.writeln(' -- Project: ' + grunt.config('settings').project.name);
grunt.log.writeln(' -- Build: ' + grunt.config('settings').project.build);
grunt.log.writeln(' -- Version: ' + grunt.config('properties').version.name);
grunt.log.writeln(' -- Target: ' + grunt.config('environment').webdav.server);
grunt.log.writeln();
};