Это зависит от вашего определения автоматики. В TeamCity нет функции Build Feature, чтобы обновлять различные файлы .json, которые gulp/bower и т. Д. Используют Teamcity 9.
Как и я, я использую gulp-bump для установки номера версии, но я нашел способ установить номер версии внутри пакета.json файл, используя номер версии teamcity.
FYI, я использую var $ = require ('gulp-load-plugins') ({lazy: true}); так что если вы видите знак $, это почему
Я также использую yargs для чтения из командной строки
То есть задача глотка, что я использую, и я поставил его в качестве зависимости моей почте сборки задача.
var args = require('yargs').argv;
var fs = require('fs');
gulp.task('setVersion', function() {
var msg = 'Setting version';
var version = args.version;
var options = {};
if (version) {
options.version = version;
msg += ' to ' + version;
}
log(msg);
return gulp
.src(config.packages)
.pipe($.print())
.pipe(version ? $.bump(options) : $.util.noop())
.pipe(gulp.dest(config.dest.root));
});
Это моя конфигурация. Это сокращенное только показать, Что нужно
module.exports = function() {
var root = './';
var config = {
dest: {
root: root,
},
packages: [
'./package.json'
]
};
return config;
};
проверить, чтобы убедиться, что версия передается, потому что, когда gulpfile в настоящее время выполняется на Девых машинах, нет необходимости устанавливать номер версии, потому что я только заботиться о номер сборки на TeamCity.
так Если вы назвали его из командной строки узла было бы
gulp build --version=2.3.4
Существует Гоча. Если вы используете package.json через инструкцию require, тогда значение будет кэшироваться, и вы можете не получить правильную версию при использовании файла. Использование оператора require вызвало у меня проблемы, поскольку я изначально изо всех сил пытался определить, почему он использовал предыдущий номер сборки, а не новый номер сборки.
Из-за этого я создал новую функцию для загрузки файла, когда мне нужно прочитать содержимое
function getPackageJson() {
return JSON.parse(fs.readFileSync('./package.json'));
}
В моей TeamCity сборки, у меня есть шаг сборки, используя тип Глотка бегуна. Для команд у меня есть только «строить»
И у меня есть следующие за дополнительные параметры командной строки
--version=%build.number%
Это для меня устанавливает версию в package.json. Если вы используете bower и т. Д., Просто добавьте дополнительные файлы json в config.packages