运行 Kentico 在 Azure 应用服务上的持续集成

Running Kentico continuous integration on Azure app services

我们有一个新项目,我们正在尝试利用 Kentico 中内置的持续集成来跟踪对模板、页面类型、转换等的更改。

我们已经设法让这个在 Kentico 数据库的两个实例之间本地工作,在一个数据库中进行更改,通过 CI 同步更改,然后使用持续集成应用程序将它们恢复到第二个数据库位于 Kentico 站点的 bin 文件夹中。

我们遇到的问题是将我们的更改部署到我们的开发和实时环境。

我们的站点作为 Azure 应用程序服务托管,我们使用 VSTS(Azure DevOps)构建和发布工作流部署到它们,但是,由于这些任务 运行 在代理中,我们尝试的任何 powershell 脚本 运行 触发 CI 应用程序失败,因为它不在站点/服务器上下文中 运行ning。

我的问题是,有没有人设法在 Azure 应用程序服务的上下文中成功 运行 Kentico CI?或者,如何在部署后在站点上触发 powershell 脚本?

我们有,但没有 CI。 VSTS + GIT。我们将 virtual objects 存储在文件系统中,并使用 git 进行版本控制。我们有自己的自定义库,可以导入导出 Kentico 对象(这些对象不受 Git 控制)。本质上,我们有一个 json 文件 "publishing manifest",我们在其中指定需要哪些对象被导出(即在环境之间移动)。

Microsoft 'Powershell on Target Machines' 提供了一个步骤,你猜你可以研究一下。

P.S。也看看 Three Ways to Manage Data in Kentico Using PowerShell

将您的 CI 文件部署到 Azure 应用服务,然后使用 Azure 作业 运行 "ContinuousIntegration.exe"

如果您在目录 \App_Data\jobs\triggered\ContinuousIntegration 中放置一个名为 KenticoCI.bat 的文件 - 这将自动创建一个您可以触发的 Web 作业:

KenticoCI.bat

cd D:\home\site\wwwroot
ren App_Offline.bak App_Offline.htm
rem # run Kentico CI Integraton
cd D:\home\site\wwwroot\bin
ContinuousIntegration.exe  -r

rem # 删除 'App_Offline.htm' 文件以使站点恢复在线 CD D:\home\site\wwwroot 仁App_Offline.htmApp_Offline.bak

是的,我在发布管道本身的 Azure DevOps 中得到了这个 运行ning。这是我们目前正在作为我工作的企业推出的东西。

让这个对我有用的关键步骤如下:

  1. 我不想部署 ContinuousIntegration.exe 或存储库文件夹,所以我需要从源代码管理创建第二个工件集(目前只有 Azure Repos 和 GitHub 据我所知)。
  2. 解压缩您的部署包并将 CMS 文件夹复制到工作目录,这是您要去的地方 运行 CI。我这样做是因为我需要可用的内置程序集。
  3. 从第 1 步的回购项目中,将 ContinuousIntegration.exe 和 CI 存储库文件夹复制到解压缩的工作文件夹中的正确位置。
  4. 确保连接字符串确实适用于解压缩文件夹中的数据库,如有必要,您可能需要更改有关 web.config 处理方式的 VS 构建选项。
  5. 从这里,您应该可以 运行 CI 在新的工作文件夹中针对您的目标数据库。

在我的例子中,因为我在目标站点上没有 CI 运行ning,这意味着每次都会恢复 所有内容

我正在编写更详细的文章,所以我会在完成后在这里分享。

编辑: - 我终于写得更详细了:https://www.ridgeway.com/blog/web-development/using-kentico-12-mvc-with-azure-devops