如何在UI中放置Meteor应用程序版本号?

Dig*_*ord 11 git meteor

我有一个流媒体应用程序,具有不同客户端的不同分支.这是因为客户需要特殊的东西.当然对吗?

我希望能够在某个UI的UI中为该客户端部署的应用程序版本放置git分支和标记/哈希.

问题是如何?Meteor中有没有办法获取这些信息并简单地使用它?

谢谢!

Kub*_*bek 11

在我的制作应用中,我用这种方式解决了这个问题:

应用/ git的/钩/ post.commit

应用/ MeteorApp /挂钩/后提交的版本

应用结构:

App
  .git
     hooks
       post-commit (file)
  MeteorApp
    client
    server
    both
    private
      version.json
    hooks
      post-commit-version (file)
Run Code Online (Sandbox Code Playgroud)

每当开发人员提交.git/hooks/post-commit执行nodejs script存储的代码时App/MeteorApp/hooks/post-commit-version.

脚本以dir格式post-commit-version生成:version.jsonApp/MeteorApp/private

{
  "timestamp": "29-08-2014 23:16",
  "branch": "master",
  "commit": "3332f6dcbde57105a8dc353e5e878651cab89856"
}
Run Code Online (Sandbox Code Playgroud)

存储的所有内容都private可供生产中的服务器访问.

如何version.json在应用程序中显示?

App/MeteorApp/both/collections/Version.js:

Version = new Meteor.Collection('version');
Run Code Online (Sandbox Code Playgroud)

应用/ MeteorApp /服务器/ startup.js

Meteor.startup(function(){
    if (Version.find().count() > 0){
        Version.remove({});
    }
    Version.insert(JSON.parse(Assets.getText("version.json")));
})
Run Code Online (Sandbox Code Playgroud)

部署应用程序后,它将触发startup回调,并将版本插入到集合中Version.

App/MeteorApp/server/publish/version.js:

Meteor.publish('version', function () {
  return Version.find();
});
Run Code Online (Sandbox Code Playgroud)

App/MeteorApp/client/startup.js:

Meteor.startup(function(){
  Meteor.subscribe("version");
})
Run Code Online (Sandbox Code Playgroud)

然后在模板中的某个地方创建帮助器:

Template.template_name.helpers({
  version:function(){
   return Version.findOne();
  }
})
Run Code Online (Sandbox Code Playgroud)

在template_name中,您使用显示版本{{version.commit}} {{version.branch}} {{version.timestamp}}.

旁注1

脚本post-commit-version没有js扩展名,因为每次我更改此文件时,我都不希望meteor将其包含在开发包中或重新加载应用程序中.然而,post-commit-version.js当该文件存储在.dir(例如App/MeteorApp/.hooks)中时,可以使用具有.作为第一字符的目录不由流星处理的目录.

旁注2

另一种可能性是加载version.json服务器端Meteor.startup,解析json并附加到全局变量之类的App.version.以后用它Meteor.method:

Meteor.methods({
  getVersion:function(){
   return App.version;
  }
})
Run Code Online (Sandbox Code Playgroud)

在客户端上,您只需调用方法:

Meteor.call("getVersion", function(error,version){
  if(error)  {
    throw new Error("Cannot get version");
    return;      
  }

  Session.set("version",version)
})
Run Code Online (Sandbox Code Playgroud)

一些模板的助手可以使用它:

Template.template_name.helpers({
  version:function(){
    return Session.get("version");
  }
})
Run Code Online (Sandbox Code Playgroud)


joh*_*sum 5

我刚刚为此编写了一个包,并将其发布在Atmosphere上.该软件包附带一个Template-Helper来显示你的git commit hash,tag或branch,如下所示:

<div>
  <p>short hash: {{gitRev 'short'}}</p>
  <p>long hash: {{gitRev 'long'}}</p>
  <p>tag: {{gitRev 'tag'}}</p>
  <p>branch: {{gitRev 'branch'}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅atmospherejs.com/johdirr/meteor-git-rev.