在 VSTS Build 中为 Azure Bot Service/Azure Functions 解决方案设置构建管道

Setting up Build Pipeline for Azure Bot Service/Azure Functions solution in VSTS Build

我有一个 Azure 机器人服务解决方案,它在我的 VSTS Git 存储库中。

我在 visual studio 中使用 Task Runner 在本地机器上编译、运行 和调试代码。

同样,我想在我的 VSTS 构建管道中构建和编译代码,就像我们如何使用 Visual Studio 模板构建 .Net 应用程序

我对具有 C# 脚本文件的 Bot 服务项目非常陌生。

我看过 msdn 文档都提到了持续集成,它会直接 link 到我的 Git repo 分支。每当我提交代码时,它都会自动推送到我的 Azure Bot 服务,在这里我想确保我提交的代码应该在推送到 Azure Bot 服务之前进行编译。为此,我想设置一个构建管道。

任何人都知道如何为这种具有 C# 脚本文件的项目设置构建管道吗?

更新:

在我的本地 PC 上,我安装了 Azure Functions CLI 工具,以及 visual studio 的 Command Task Runner 扩展。我按照下面的 link 启用本地调试 enter link description here

Task 运行ner 运行ning debughost.cmd 文件在我的 Bot Service 代码中,它包含以下代码

    @echo off
set size=0
call func settings list -data > %temp%\settings-list
call :filesize %temp%\settings-list
if NOT %size% == 0 goto show
@echo ----------------------------------------------------------------------
@echo To fetch your bot service settings run the following command:
@echo     func azure functionapp fetch-app-settings [YOUR_BOT_SERVICE_NAME]
@echo func azure functionapp fetch-app-settings AthenaDevbvpn6xsu2tz6i
@echo ----------------------------------------------------------------------

goto start

:show
type %temp%\settings-list
erase %temp%\settings-list 

:start
@func host start -p 3978 
goto :eof

:filesize
  set size=%~z1
  exit /b 0

任务运行的输出是

对于Azure Bot Service,在VSTS中设置与你的仓库master分支的持续集成,对于VSTS中的仓库,你可以创建一个新的分支,比如Dev,然后与Dev分支一起工作并合并到master。之后代码将更新为azure。

简单步骤:

  1. 在 VSTS 中将持续集成设置为您的存储库(master 分支)
  2. 在 VSTS 中转到存储库的代码页
  3. Select 分支机构
  4. 点击新建分支(例如 dev)
  5. 将开发分支克隆到本地并使用它(例如修改)
  6. 将更改推送到远程 Dev 分支
  7. 创建构建定义
  8. 在“选项”选项卡中启用“允许脚本访问 OAuth 令牌”选项。
  9. 根据您在本地的构建方式添加构建应用程序的步骤(例如gulp)
  10. 添加命令行步骤

  1. 添加命令行步骤

  1. 添加命令行步骤

目前没有任何开箱即用的任务来编译 CSX 文件。以下是我可以为您的情况考虑的解决方法,但并不完美:

  1. Deploy your own build agent and then configure it by following the steps in the link you provided: Debugging C# bots built using the Azure Bot Service on Windows.
  2. 创建一个powershell脚本来调用Azure Function CLI来像"debughost.cmd"那样编译csx文件,并检查编译过程中是否有任何错误。
  3. 将 powershell 脚本上传到源代码管理中。
  4. 在构建定义中添加 powershell 脚本任务以调用您创建的 powershell 脚本。
  5. 保存构建定义并将其排队。

这是我创建的 powershell 脚本供您参考:

##Run Azure Func command to compile csx file
$compile = Start-Process 'func' -passthru -WorkingDirectory '.' -ArgumentList 'host start -p 3739' -RedirectStandardOutput 'output.txt'
##You need to set the sleep time base on the build time of your project
Start-Sleep -s 20
Stop-Process $compile -Force
Stop-Process -Name 'Func'

##Get the output from Func and check if there is error in the output
$boutput = Get-Content 'output.txt'
Write-Host 'Azure Function CLI Log:'
Write-Host '*****************************************************************************************************************************'
$boutput
Write-Host '*****************************************************************************************************************************'

$reg = "Function.compilation.error"
foreach($line in $boutput){
    if($line -match $reg)
    {
        ##Fail the task if function compilation error exist
        Write-Host '##vso[task.logissue type=error]Error occur during function compilation'
        Exit 1
    }
 }
 Write-Host 'Function compilation success!'

如果编译失败你会得到这样的结果: