Azure devops 使用Azure DevOps CICD管道将旧式.net framework控制台应用程序部署到prem服务器上

Azure devops 使用Azure DevOps CICD管道将旧式.net framework控制台应用程序部署到prem服务器上,azure-devops,console-application,azure-pipelines,pipeline,on-prem,Azure Devops,Console Application,Azure Pipelines,Pipeline,On Prem,我不熟悉DevOps和CICD管道。 我使用Azure DevOps CICD管道成功地将ASP.NET MVC网站部署到使用Azure DevOps的onprem代理/计算机 类似地,我想部署一个控制台应用程序,它可以 最终用作windows“任务计划程序”中的计划作业,或 作为“Windows服务”。现在我正在管理这些部署 手动操作,但在看到DevOps的强大功能后,我希望 对于控制台应用程序来说,这确实是一个自动化的解决方案 这些应用程序是在传统框架(如3.5到4.5)中构建的,因此不是.

我不熟悉DevOps和CICD管道。
我使用Azure DevOps CICD管道成功地将ASP.NET MVC网站部署到使用Azure DevOps的onprem代理/计算机

类似地,我想部署一个控制台应用程序,它可以 最终用作windows“任务计划程序”中的计划作业,或 作为“Windows服务”。现在我正在管理这些部署 手动操作,但在看到DevOps的强大功能后,我希望 对于控制台应用程序来说,这确实是一个自动化的解决方案

这些应用程序是在传统框架(如3.5到4.5)中构建的,因此不是.net核心应用程序。 我发现很多在线文章都演示了在azure上部署webjobs,或者onprem可能会这样做,但旧的控制台应用程序可能会这样吗

我尝试在Framework4.7中构建一个非常简单的控制台应用程序,并尝试部署/复制/发布到我的onprem机器的共享路径。已授予正在运行但复制文件和发布工件任务失败的VSTS代理服务权限。我尝试在CI和CD管道中都这样做,但都失败了

请查看管道和日志并建议我哪里做错了,或者有其他选择吗?

2019-11-05T05:03:52.8436105Z###[错误]发布生成工件 失败,出现错误:无法创建目录'\MAHANTAM\Azure' 工件\DemoConsoleApp'。无法验证目录是否存在: “\MAHANTAM\Azure工件\DemoConsoleApp”。如果目录是一个文件 共享,请验证共享名称是否正确,共享是否联机, 并且当前进程具有访问共享的权限

CI管道1

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=True /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'DemoConsoleApp'
    publishLocation: 'Container'
trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=True /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'DemoConsoleApp'
    publishLocation: 'Container'
CI管道2

pool:
  name: Azure Pipelines
  demands:
  - msbuild
  - visualstudio

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'
    vstsFeed: '622d44e2-69d4-4d42-bb91-9d6ddd97f9ba/8eaf9077-829d-4567-93c0-8e0d7973634b'

- task: VSBuild@1
  displayName: 'Build solution **\*.sln'
  inputs:
    solution: '$(Parameters.solution)'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

- task: PublishSymbols@2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '**\bin\**\*.pdb'
    PublishSymbols: false
  continueOnError: true

- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: '$(system.defaultworkingdirectory)'
    Contents: '**\bin\$(BuildConfiguration)\**'
    TargetFolder: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

- task: CopyFiles@2
  displayName: 'Copy Files Task'
  inputs:
    SourceFolder: '$(system.defaultworkingdirectory)'
    Contents: '**/**'
    TargetFolder: '$(build.artifactstagingdirectory)'
  condition: succeededOrFailed()

- task: ArchiveFiles@2
  displayName: 'Archive $(Build.BinariesDirectory)'

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: DemoConsoleApp'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: DemoConsoleApp

如果您为代理使用代理池“Azure管道”,则部署将发生在Azure云计算机上,而该计算机对您的本地计算机一无所知

您应该在本地安装一个自托管代理,并将其链接到您的DevOps,并将其用于代理


失败时出现了什么错误?如果您是在prem上部署,那么配置一个内部部署代理可能会更容易。我访问了您的DevOps并捕获了错误。(顺便说一句,你链接到了错误的区域)这看起来像是一个正常的访问错误。由于我们没有访问权限,您能解释一下部署步骤的作用吗?谢谢您的评论@Nick.McDermaid。这只是为了学习,我试图找出如何设置控制台应用程序的CICD。最终,我必须将其部署到多个服务器上,在这些服务器上已经设置了计划作业和win服务。在部署中,我只需要将bin文件夹复制到uat/prod服务器。复制exe+config+DLL,我当前每次都手动执行此操作。您是否使用托管Azure管道?这是一台无法访问共享驱动器的云计算机。或者您使用的是自托管代理?我试图更改上面CD管道图像中的参数,但没有成功。我正在使用“部署组”选项,其中我的机器已注册,似乎处于联机状态,我也在其中部署了MVC webapp。我仍然有一个isseue,不知怎的,更改没有反映出来,我在CD中检查它是否选择了最新的构建工件。但不知何故,EXE没有被更新。下面是CD管道的YAML,CI在源代码中可见。步骤:-任务:CopyFiles@2displayName:“复制文件”输入:SourceFolder:“$(System.DefaultWorkingDirectory)/DemoConsoleEapp/DemoConsoleEapp/ConsoleEapp2/bin/Release”TargetFolder:“\\MAHANTAM\Azure Artifacts\DemoConsoleEapp\1。下载构建工件(从DevOps内部),并确保它是您期望的。2.您还可以删除目标文件夹中的文件并确认已将其复制到中。我猜您没有复制正确的生成文件夹或其他内容。