我有一个流媒体应用程序,具有不同客户端的不同分支.这是因为客户需要特殊的东西.当然对吗?
我希望能够在某个UI的UI中为该客户端部署的应用程序版本放置git分支和标记/哈希.
问题是如何?Meteor中有没有办法获取这些信息并简单地使用它?
谢谢!
Kub*_*bek 11
在我的制作应用中,我用这种方式解决了这个问题:
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}}.
脚本post-commit-version没有js扩展名,因为每次我更改此文件时,我都不希望meteor将其包含在开发包中或重新加载应用程序中.然而,post-commit-version.js当该文件存储在.dir(例如App/MeteorApp/.hooks)中时,可以使用具有.作为第一字符的目录不由流星处理的目录.
另一种可能性是加载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)
我刚刚为此编写了一个包,并将其发布在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.
| 归档时间: |
|
| 查看次数: |
4038 次 |
| 最近记录: |