我通过git(kudu)部署了一个azure网站。我希望能够在页脚中显示当前部署的git哈希 - 这可能吗?
我想我正在寻找的是在git pull之后但在编译之前挂钩到kudu以编辑CS文件的某种方式 - 这可能在WAWS上吗?
答案 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
获得附加说明: