Azure devops 使用Azure DevOps CICD管道将旧式.net framework控制台应用程序部署到prem服务器上
我不熟悉DevOps和CICD管道。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)中构建的,因此不是.
我使用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.您还可以删除目标文件夹中的文件并确认已将其复制到中。我猜您没有复制正确的生成文件夹或其他内容。