如何使用git部署的windowsazure网站呈现内部版本号/哈希?

lawou6xi  于 2021-06-20  发布在  Kudu
关注(0)|答案(3)|浏览(304)

我在azure上有一个通过git(kudu)部署的网站。我希望能够在页脚中显示当前部署的git哈希-这可能吗?
我想我正在寻找的是某种方法,在git拉取之后,但在编译之前,钩住kudu来编辑cs文件-这在waws上可能吗?

ckocjqey

ckocjqey1#

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

rmbxnbpk

rmbxnbpk2#

在我们的解决方案(asp.NETMVC)中,我们添加了一个附加项目,该项目始终作为第一个项目构建。此项目引用nuget包“gitsharp”,它是一个托管的.net git客户端库。附加项目的输出是一个命令行工具,我们称之为versionnumbergenerator.exe。
在这个附加项目的后期生成事件中,我们执行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 commit id,包括一个文件\u layout.cshtml,它可以在页脚中显示commit id。
此解决方案与kudu的自定义部署脚本结合使用,可用于azure网站。它也可以在使用kudu的其他场景中工作。首先构建附加项目是很重要的,这样它也可以执行构建后的步骤。仅在本地构建解决方案就足够了。
我们已经在许多项目中使用了这种方法。一个例子可以在https://app.storkk.com
附加说明:
截至发稿时,gitsharp已经有一段时间没有得到维护了。不过,目前看来效果还不错。
您可能需要考虑从版本控制中排除assemblyinfoshared.cs,因为它将在每个生成过程中重新生成。
您可能需要在解决方案中手动设置依赖项,以确保以正确的顺序生成项目。

hk8txs48

hk8txs483#

找到了一个方法:你可以按照下面的说明进入kuduhttps://github.com/projectkudu/kudu/wiki/deployment-hooks
将git散列放入我添加的文件中

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

到cmd文件的post deploy区域。如果我想对cs文件做些什么,我可以在编译之前做,很明显azurecli生成的部署脚本正在尝试做什么。

相关问题