如何使用git部署的Windows Azure网站呈现构建号/哈希?

时间:2015-01-15 19:42:44

标签: git azure-web-sites kudu

我通过git(kudu)部署了一个azure网站。我希望能够在页脚中显示当前部署的git哈希 - 这可能吗?

我想我正在寻找的是在git pull之后但在编译之前挂钩到kudu以编辑CS文件的某种方式 - 这可能在WAWS上吗?

3 个答案:

答案 0 :(得分:4)

找到方法:您可以按照https://github.com/projectkudu/kudu/wiki/Deployment-hooks

中的说明连接到kudu

要将git哈希到我添加的文件中

git rev-parse --short HEAD > "%DEPLOYMENT_TARGET%\version.txt"

到cmd文件的post部署区域。如果我想在编译之前对CS文件做一些事情,那么很明显,azure cli生成的部署脚本正在尝试做什么。

答案 1 :(得分:3)

使用自定义部署脚本的方法可能有效。请参阅here的一些相关讨论。在部署期间,Kudu创建一个包含提交ID的%home%\site\deployments\active文件,因此您可以在运行时读取它。

答案 2 :(得分:1)

在我们的解决方案(ASP.NET MVC)中,我们添加了一个始终构建为第一个项目的附加项目。该项目引用了nuget包'GitSharp',它是一个托管的.NET Git客户端库。附加项目的输出是命令行工具,我们称之为VersionNumberGenerator.exe。

在这个附加项目的post-build事件中,我们执行VersionNumberGenerator.exe。这会生成一个文件AssemblyInfoShared.cs,它还包含一个包含Git commit id作为常量的类的源代码。我们使用'GitSharp'以编程方式获取提交ID。这是一个片段:

// Use relative path to .gitignore for the following statement using (var repo = new Repository(".\\..\\..\\..")) { shortHead = repo.Head.CurrentCommit.ShortHash; // shortHead now contains the git commit id }

所有其他项目然后通过链接引用文件AssemblyInfoShared.cs以避免重复。因此,这些其他项目中的每一个都可以在需要的地方显示Git提交ID,包括文件_Layout.cshtml,它可以在页脚中显示提交ID。

此解决方案适用于Azure网站,并结合了Kudu的自定义部署脚本。它也可能适用于使用Kudu的其他场景。首先构建附加项目非常重要,这样它也可以执行构建后的步骤。在本地,只需构建解决方案即可。

我们在很多项目中都使用过这种方法。一个例子可以在https://app.storkk.com

获得

附加说明:

  • 在写作时,GitSharp暂时没有收到维护。但是,现在似乎工作得很好。
  • 您可能需要考虑从版本控制中排除AssemblyInfoShared.cs,因为它将在每次构建期间重新生成。
  • 您可能需要在解决方案中手动设置依赖关系,以确保项目按正确的顺序构建。