Выполните задачу 4 раза в конвейерах Azure - PullRequest
0 голосов
/ 25 октября 2019

Я использую конвейеры Azure для развертывания приложения ASP.NET Core 2.2 в Azure.

Я успешно выполняю развертывание на ОДНОЙ машине, используя следующие задания конвейера Azure:

variables:
  azureSubscription: 'Azure'
  buildConfiguration: ’Staging’


- stage: Publish Staging
  dependsOn: Test
  jobs:
  - job: Publish
    pool:
      vmImage: 'Ubuntu 16.04'
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/*.csproj'
        arguments: '--configuration ‘$(buildConfiguration)’ --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    - task: AzureRmWebAppDeployment@4
      displayName: Api
      inputs:
        package: '$(Build.ArtifactStagingDirectory)/MyApi.zip'
        azureSubscription: '$(azureSubscription)'
        appType: 'Web App on Linux'
        webAppName: ‘myapi'

ОднакоМне нужно развернуть на 4 компьютерах, и что в каждом развертывании меняется:

azureSubscription: 'Azure' buildConfiguration: 'Staging'

Нужно ли повторять мой код 4 раза или естьспособ сделать это?

Я имею в виду, чтобы выполнить код 4 раза каждый с различными значениями переменной.

1 Ответ

2 голосов
/ 27 октября 2019

Мы можем установить переменную на уровне работы, чтобы сделать ее доступной только для конкретной работы. Мы также можем развернуть несколько этапов, просто установив переменную на уровне этапа (подробности см. В Задать переменные в конвейере ).

Так, например, вы можете добавить 4 задания для развертывания на 4 компьютерах, как показано ниже:

- stage: Publish Staging
  dependsOn: Test
  jobs:
  - job: Publish
    pool:
      vmImage: 'Ubuntu 16.04'
    variables:
      azureSubscription: 'Azure1'
      buildConfiguration: ’Staging1’
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/*.csproj'
        arguments: '--configuration ‘$(buildConfiguration)’ --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    - task: AzureRmWebAppDeployment@4
      displayName: Api
      inputs:
        package: '$(Build.ArtifactStagingDirectory)/MyApi.zip'
        azureSubscription: '$(azureSubscription)'
        appType: 'Web App on Linux'
        webAppName: ‘myapi'

  - job: Publish
    pool:
      vmImage: 'Ubuntu 16.04'
    variables:
      azureSubscription: 'Azure2'
      buildConfiguration: ’Staging2’
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/*.csproj'
        arguments: '--configuration ‘$(buildConfiguration)’ --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    - task: AzureRmWebAppDeployment@4
      displayName: Api
      inputs:
        package: '$(Build.ArtifactStagingDirectory)/MyApi.zip'
        azureSubscription: '$(azureSubscription)'
        appType: 'Web App on Linux'
        webAppName: ‘myapi'     

  - job: Publish
    pool:
      vmImage: 'Ubuntu 16.04'
    variables:
      azureSubscription: 'Azure2'
      buildConfiguration: ’Staging3’
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/*.csproj'
        arguments: '--configuration ‘$(buildConfiguration)’ --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    - task: AzureRmWebAppDeployment@4
      displayName: Api
      inputs:
        package: '$(Build.ArtifactStagingDirectory)/MyApi.zip'
        azureSubscription: '$(azureSubscription)'
        appType: 'Web App on Linux'
        webAppName: ‘myapi'     

  - job: Publish
    pool:
      vmImage: 'Ubuntu 16.04'
    variables:
      azureSubscription: 'Azure4'
      buildConfiguration: ’Staging4’
    steps:
    - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        publishWebProjects: false
        projects: '**/*.csproj'
        arguments: '--configuration ‘$(buildConfiguration)’ --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true
    - task: AzureRmWebAppDeployment@4
      displayName: Api
      inputs:
        package: '$(Build.ArtifactStagingDirectory)/MyApi.zip'
        azureSubscription: '$(azureSubscription)'
        appType: 'Web App on Linux'
        webAppName: ‘myapi' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...