我正在努力使我的MultiStage管道在Azure VM中运行的托管代理中运行.exe文件。
我的.yaml文件是:
trigger:
- develop
stages:
- stage: build
displayName: Build
jobs:
- job: buildJob
pool:
vmImage: 'ubuntu-16.04'
variables:
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
inputs:
versionSpec: '5.5.0'
- task: DotNetCoreCLI@2
displayName: 'Dotnet Build $(buildConfiguration)'
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration)'
projects: '**/TestProj.csproj'
- task: DotNetCoreCLI@2
displayName: "Publish"
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/TestProj.csproj'
arguments: '--no-restore --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: false
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: Container
- stage: Release
displayName: Release
dependsOn: build
jobs:
- deployment: AzureVMDeploy
displayName: agentDeploy
environment:
name: AzureDeploy
resourceName: vmName
resourceType: VirtualMachine
tags: develop
该虚拟机位于天青管道Environment
上。运行此管道后,该文件夹被下载到VM中,但是我找不到在该文件夹中自动执行输出.exe文件的方法。
我认为方法是通过任务来创建作业,但是我不知道如何设置VM上安装的代理以运行此任务。
我该怎么做?
答案 0 :(得分:0)
如果我对您的理解正确,那么您想执行已部署到VM的工件文件。
我认为PowerShell on Target Machines task应该为您完成这项工作。 Yoy可以编写简单的内联脚本来执行文件。但是,您需要在VM上配置远程配置。 This article 可能会帮助您。
答案 1 :(得分:0)
您可以在策略中指定任务:Deployment job例如:
YAML
stages:
- stage: build
jobs:
- job: buildJob
pool:
vmImage: 'Ubuntu-16.04'
steps:
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
publishLocation: 'pipeline'
- stage: deploy
dependsOn: build
jobs:
- deployment: DeployWeb
displayName: deploy Web App
environment:
name: vm1
resourceType: virtualmachine
strategy:
runOnce:
deploy:
steps:
- script: echo my first deployment
- task: CmdLine@2
inputs:
script: 'more README.md'
workingDirectory: '$(Pipeline.Workspace)/build.buildJob/s'
对于此YAML管道,我在构建阶段将管道工作区中的所有文件发布到工件,然后在部署阶段将此工件下载到vm1环境的目标虚拟机(文件夹名称将为{stage name}。{job name} }),然后运行命令行任务以获取文件的内容。 (脚本和命令行任务将在该虚拟机上运行)