Подтвердить что ты не робот

Можете ли вы записать ревизию git с помощью gruntjs

Я создаю свой webapp с помощью gruntjs и yeoman.io.

Я бы хотел записать запись git revision/commit/sha, из которой появилась сборка, чтобы я мог посмотреть в развернутой версии и дважды проверить, откуда она взялась, и что изменилось с новым выпуск.

4b9b3361

Ответ 1

Не эксперт Grunt, но здесь решение на основе git описывает, что я сейчас использую для большого приложения AngularJS. Мы сохраняем основную версию в проекте package.json. В дополнение к этому я создаю файл version.json, содержащий версию и дату для каждой сборки. Эта информация может быть позже доступна клиенту, чтобы помочь тестировщикам и сопровождающим лицам узнать, какую версию/версию приложения они используют.

grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),

  'git-describe': {
    options: {
      prop: 'meta.revision'
    },
    me: {}
  },

  ...
});

grunt.registerTask('tag-revision', 'Tag the current build revision', function () {
  grunt.task.requires('git-describe');

  grunt.file.write('public/version.json', JSON.stringify({
    version: grunt.config('pkg.version'),
    revision: grunt.config('meta.revision'),
    date: grunt.template.today()
  }));
});

grunt.registerTask('version', ['git-describe', 'tag-revision']);

Итак, включив задачу разработки в наши задачи сборки, мы можем пометить каждую сборку файлом version.json.

Ответ 2

Не специалист по gruntjs, но, возможно, вы можете включить в свой шаг сборки вызов модуля gruntjs- git -describe, который вызовет эту задачу:

module.exports = function( grunt ) {
  grunt.registerTask("describe", "Describes current git commit", function (prop) {
    var done = this.async();

    grunt.log.write("Describe current commit: ");

    grunt.util.spawn({
      cmd : "git",
      args : [ "describe", "--tags", "--always", "--long", "--dirty" ]
    }, function (err, result) {
      if (err) {
        grunt.log.error(err);
        return done(false);
      }

      grunt.config(prop || "meta.version", result);

      grunt.log.writeln(result.green);

      done(result);
    });
  });
};

Использование git -describe - хороший способ записать "номер версии" с помощью Git, поскольку он основан на SHA1 (однозначный идентификатор).
Подробнее об этой теме:

Ответ 3

Чтобы уточнить комментарий Лукаса Поттерского к ответу inukshuk, правильный способ сделать то же самое с grunt- git -describe >= 2.2.0 выглядит следующим образом:

grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),

  'git-describe': {
    options: {
    },
    me: {}
  },

  ...
});

grunt.registerTask('saveRevision', function() {
  grunt.event.once('git-describe', function (rev) {
    grunt.option('gitRevision', rev);
  });
  grunt.task.run('git-describe');
});

grunt.registerTask('tag-revision', 'Tag the current build revision', function () {
  grunt.task.requires('git-describe');

  grunt.file.write('public/version.json', JSON.stringify({
    version: grunt.config('pkg.version'),
    revision: grunt.option('gitRevision'),
    date: grunt.template.today()
  }));
});

grunt.registerTask('version', ['saveRevision', 'tag-revision']);