使用Azure Pipelines部署和运行.exe文件

时间:2020-04-01 19:09:50

标签: azure azure-devops

我正在努力使我的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上安装的代理以运行此任务。

我该怎么做?

2 个答案:

答案 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} }),然后运行命令行任务以获取文件的内容。 (脚本和命令行任务将在该虚拟机上运行)

相关问题