Конвейер Azure DevOps навсегда застрял в ожидании

#azure-devops #azure-pipelines

Вопрос:

У нас есть конвейер Azure DevOps, работающий на самодостаточном сервере без параллелизма, который не выполняет задание или этап развертывания.

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

Второй этап навсегда застрял в ожидании («Задание находится в ожидании»). Он никогда не начнет работать.

Первая попытка

Этап Развертывания Не Запущен

Работа еще не завершена

Сцена также не может быть отменена, и, согласно изображению выше, она застряла на 2 месяца. Я также должен отметить, что я отправил это в сообщество разработчиков Azure по адресу developercommunity.visualstudio.com, но я думаю, что они отказались от моего билета.

Я уверен, что в Azure DevOps есть много успешных развертываний CI/CD, я просто не могу сказать, что я здесь делаю не так. Я использую рабочий метод в наших отдельных конвейерах выпуска, которые мы запускаем вручную.

Ниже приведен затронутый трубопровод, любые рекомендации будут высоко оценены.

   trigger: none

  variables:
    ArtifactPackageName: 'app.zip'
    DeploySite.IISDeploymentType: 'IISWebsite'
    DeploySite.ActionIISWebsite: 'CreateOrUpdateWebsite'
    DeploySite.WebsiteName: 'REDACTED'
    DeploySite.WebsitePhysicalPath: '%SystemDrive%inetpubwwwrootREDACTED'
    DeploySite.AddBinding: false
    DeploySite.VirtualPathForApplication: '/REDACTED'
    DeploySite.AppPoolName: 'REDACTED'
    DeploySite.VirtualApplication: 'REDACTED'
    DeploySite.Package: $(Pipeline.Workspace)/drop/$(ArtifactPackageName)
    DeploySite.RemoveAdditionalFilesFlag: true
    DeploySite.TakeAppOfflineFlag: true
    DeploySite.XmlTransformation: false
    DeploySite.XmlVariableSubstitution: true
    DeploySite.SetParametersFile: $(Pipeline.Workspace)/drop/REDACTED.SetParameters.xml
    DeploySite.JSONSettingsFiles: '**/appsettings.json'

  stages:
  - stage: 'Build'
    displayName: 'Build'
    jobs:
    - job: 'Build'
      displayName: 'Build'
      pool:
        name: REDACTED
      variables:
        Solution: '**/*.sln'
        BuildPlatform: 'Any CPU'
        BuildConfiguration: 'Release'
      steps:
      - task: NuGetToolInstaller@1
        displayName: 'Install NuGet Tools'
      - task: NuGetCommand@2
        displayName: 'Restore NuGet Packages'
        inputs:
          restoreSolution: '$(Solution)'
      - task: VSBuild@1
        displayName: 'MSBuild'
        inputs:
          solution: '$(Solution)'
          msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=false /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(Build.ArtifactStagingDirectory)$(ArtifactPackageName)"'
          platform: '$(BuildPlatform)'
          configuration: '$(BuildConfiguration)'
      - task: PublishBuildArtifacts@1
        displayName: 'Publish Build Artifacts'
        inputs:
          PathtoPublish: '$(Build.ArtifactStagingDirectory)'
          ArtifactName: drop
          publishLocation: 'Container'
          
  - stage: 'Deploy'
    displayName: 'Deploy'
    dependsOn: 'Build'
    jobs:
    - deployment: 'Deploy'
      displayName: 'Deploy'
      continueOnError: false
      timeoutInMinutes: 10
      workspace:
        clean: all
      pool:
        name: REDACTED
      environment:
        name: SERVER-DEV
        resourceType: VirtualMachine
      strategy:
        runOnce:
          deploy:
            steps:
            - download: current
              displayName: 'Download Artifact'
              artifact: drop
            - task: IISWebAppManagementOnMachineGroup@0
              displayName: 'Stop IIS App Pool'
              continueOnError: false
              inputs:
                IISDeploymentType: IISApplicationPool
                ActionIISApplicationPool: StopAppPool
                StartStopRecycleAppPoolName: '$(Parameters.WebsiteName)'
            - task: IISWebAppDeploymentOnMachineGroup@0
              displayName: 'IIS Web App Deploy'
              continueOnError: false
              inputs:
                WebSiteName: '$(DeploySite.WebsiteName)'
                VirtualApplication: '$(DeploySite.VirtualApplication)'
                Package: '$(DeploySite.Package)'
                RemoveAdditionalFilesFlag: $(DeploySite.RemoveAdditionalFilesFlag)
                SetParametersFile: $(DeploySite.SetParametersFile)
                TakeAppOfflineFlag: $(DeploySite.TakeAppOfflineFlag)
                XmlTransformation: $(DeploySite.XmlTransformation)
                XmlVariableSubstitution: $(DeploySite.XmlVariableSubstitution)
                JSONFiles: $(DeploySite.JSONSettingsFiles)
            - task: IISWebAppManagementOnMachineGroup@0
              displayName: 'Start IIS App Pool'
              continueOnError: true
              inputs:
                IISDeploymentType: IISApplicationPool
                ActionIISApplicationPool: StartAppPool
                StartStopRecycleAppPoolName: '$(Parameters.WebsiteName)'
 

Комментарии:

1. Если задание не было запущено, похоже, оно ожидает доступного агента. Вы уверены, что в вашем пуле есть хотя бы один свободный агент?

2. Я уверен. У нас есть только один агент, но я могу продолжать ставить задачи в очередь на этом агенте снова и снова, и они будут выполняться и выполняться просто отлично.

3. У меня точно такая же проблема, но нет упоминания о ключевом слове «развернуть» или о чем-то подобном

Ответ №1:

У меня была та же ошибка. Я переименовался - deployment: Deploy в - deployment: Deployment …и это начало работать.

Комментарии:

1. Я… я не нахожу слов. Я думал, что этот раздел предназначен для названия. Сейчас это работает, просто отлично. Большое вам за это спасибо!

2. Я нашел ссылку на «развертывание» в качестве ключевого слова в документах, а также ссылку в часто задаваемых вопросах

Ответ №2:

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

Успешным обходным решением является замена задания развертывания на обычное задание. Однако этот подход не сохранит историю развертывания и не позволит разработать стратегию развертывания.

В вашем случае Deploy это было бы:

 - stage: 'Deploy'
  displayName: 'Deploy'
  dependsOn: 'Build'
  jobs:
  - job: 'Deploy'
    displayName: 'Deploy'
    continueOnError: false
    timeoutInMinutes: 10
    workspace:
      clean: all
    pool:
      name: REDACTED
    steps:
    - download: current
      displayName: 'Download Artifact'
      artifact: drop
    - task: IISWebAppManagementOnMachineGroup@0
      displayName: 'Stop IIS App Pool'
      continueOnError: false
      inputs:
        IISDeploymentType: IISApplicationPool
        ActionIISApplicationPool: StopAppPool
        StartStopRecycleAppPoolName: '$(Parameters.WebsiteName)'
    - task: IISWebAppDeploymentOnMachineGroup@0
      displayName: 'IIS Web App Deploy'
      continueOnError: false
      inputs:
        WebSiteName: '$(DeploySite.WebsiteName)'
        VirtualApplication: '$(DeploySite.VirtualApplication)'
        Package: '$(DeploySite.Package)'
        RemoveAdditionalFilesFlag: $(DeploySite.RemoveAdditionalFilesFlag)
        SetParametersFile: $(DeploySite.SetParametersFile)
        TakeAppOfflineFlag: $(DeploySite.TakeAppOfflineFlag)
        XmlTransformation: $(DeploySite.XmlTransformation)
        XmlVariableSubstitution: $(DeploySite.XmlVariableSubstitution)
        JSONFiles: $(DeploySite.JSONSettingsFiles)
    - task: IISWebAppManagementOnMachineGroup@0
      displayName: 'Start IIS App Pool'
      continueOnError: true
      inputs:
        IISDeploymentType: IISApplicationPool
        ActionIISApplicationPool: StartAppPool
        StartStopRecycleAppPoolName: '$(Parameters.WebsiteName)'
 

Комментарии:

1. Это выглядит хорошо, но как указать среду (виртуальную машину или ресурс) для развертывания? Я вижу, что свойство среды было недопустимым в задачах.

2. К сожалению, я также не смог найти способ настроить окружающую среду. В моем случае это не было препятствием, но я понимаю, что это реальный недостаток.

Ответ №3:

Изменено с — развертывание: Развертывание На — развертывание: Развертывание

введите описание изображения здесь