I build my webapp with gruntjs and yeoman.io.
I'd like to be able to record the git revision/commit/sha that a build come from, so that i can look in the deployed version and double check where it came from and what has changed with the new release.
So "revision" refers to the id you can use as a parameter to reference an object in git (usually a commit). HEAD@{5 minutes ago} is a revision which reference the commit present 5 minutes ago.
Not a Grunt expert either, but here's a solution based on git describe which I currently use for a large AngularJS app. We store the major version in the project's package.json. In addition to that I generate a version.json file containing the revision and date for every build. This information can later be accessed by the client to help testers and maintainers to see which version/revision of the app they're using.
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']);
So by including the version task in our build tasks we can tag each build with a version.json file.
Not a gruntjs specialist, but maybe you can include in your build step a call to the gruntjs-git-describe module, which will call that task:
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);
});
});
};
Using git-describe is a good way to record a "version number" with Git, as it is SHA1-based (unambiguous id).
See more on that topic:
git describe
- how to get a relatively straightforward string?"$Id:$
equivalent?"If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With