我有一个通过 git (kudu) 部署的天蓝色网站。我希望能够在页脚中显示当前部署的 git 哈希 - 这可能吗?
我想我正在寻找的是在 git pull 之后但在编译之前挂接到 kudu 以编辑 CS 文件的某种方式——这在 WAWS 上是否可行?
我有一个通过 git (kudu) 部署的天蓝色网站。我希望能够在页脚中显示当前部署的 git 哈希 - 这可能吗?
我想我正在寻找的是在 git pull 之后但在编译之前挂接到 kudu 以编辑 CS 文件的某种方式——这在 WAWS 上是否可行?
找到了一种方法:您可以按照https://github.com/projectkudu/kudu/wiki/Deployment-hooks上的说明连接到 kudu
要将 git 哈希放入我添加的文件中
git rev-parse --short HEAD > "%DEPLOYMENT_TARGET%\version.txt"
到 cmd 文件的部署后区域。如果我想对 CS 文件做一些事情,我可以在编译之前这样做,很明显 azure cli 生成的部署脚本试图做什么。
使用自定义部署脚本的方法可能会奏效。请在此处查看一些相关讨论。在部署期间,Kudu 会创建一个%home%\site\deployments\active
包含提交 ID 的文件,因此您可以在运行时读取它。
在我们的解决方案 (ASP.NET MVC) 中,我们添加了一个始终作为第一个项目构建的附加项目。该项目引用了 nuget 包“GitSharp”,它是一个托管的 .NET Git 客户端库。附加项目的输出是一个命令行工具,我们称之为 VersionNumberGenerator.exe。
在这个附加项目的构建后事件中,我们执行 VersionNumberGenerator.exe。这将生成一个文件 AssemblyInfoShared.cs,其中还包括一个包含 Git 提交 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。
此解决方案结合 Kudu 的自定义部署脚本适用于 Azure 网站。它也可能适用于使用 Kudu 的其他场景。重要的是首先构建附加项目,以便它也执行构建后的步骤。在本地构建解决方案就足够了。
我们已经在许多项目中使用了这种方法。https://app.storkk.com上提供了一个示例
补充笔记: