2

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

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

4

3 回答 3

4

找到了一种方法:您可以按照https://github.com/projectkudu/kudu/wiki/Deployment-hooks上的说明连接到 kudu

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

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

到 cmd 文件的部署后区域。如果我想对 CS 文件做一些事情,我可以在编译之前这样做,很明显 azure cli 生成的部署脚本试图做什么。

于 2015-01-15T21:36:26.590 回答
3

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

于 2015-01-15T23:03:00.590 回答
1

在我们的解决方案 (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上提供了一个示例

补充笔记:

  • 在撰写本文时,GitSharp 已经有一段时间没有得到维护了。但是,就目前而言,它似乎工作得很好。
  • 您可能需要考虑从版本控制中排除 AssemblyInfoShared.cs,因为它将在每次构建期间重新生成。
  • 您可能需要在解决方案中手动设置依赖项,以确保以正确的顺序构建项目。
于 2015-01-17T23:12:29.620 回答