Могу ли я иметь собственный локальный сервер агента сборки в Azure Devops с возможностью перехода в облако?

Можно ли создать пул агентов с автономными агентами, который возвращается к Azure Pipelines в случае, если автономные агенты недоступны?

Я попытался найти ответ на этот вопрос и покопался в Azure DevOps. Кажется, это невозможно.

Привет @Kjensen, доброго дня тебе. Есть ли у вас возможность просмотреть ответы ниже? Вообще говоря, пул агентов конвейера выбирается во время компиляции конвейера, и мы не можем изменить оркестровку во время работы конвейера. Мой ответ на оценку состояния задания без агента во время выполнения конвейера и выполнение различных этапов — это просто возможный вариант для справки. Надеюсь, информация поможет решить ваш вопрос в этом посте. Спасибо и желаю продуктивной недели.

Alvin Zhao - MSFT 19.08.2024 13:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Ответ принят как подходящий

Для этого перед назначением агента конвейер должен знать, есть ли какой-либо простаивающий агент в локальном пуле агентов. Для этого у вас может быть тест для вызова запроса REST API в задаче конвейера безагентных заданий InvokeRESTAPI@1, чтобы проверить, назначены ли агентам в пуле агентов запросы, а затем определить запуск последующего задания в MS- размещенный или самостоятельный пул агентов.


parameters:
- name: agentIds
  type: object
  default:
  - 465
  - 547

variables:
  system.debug: true
  orgName: ${{split(variables['System.CollectionUri'], 'https://dev.azure.com/')[1] }}
  poolId: 1 # Default
stages:
- stage: StageCheck
  jobs:
  - job: AgentlessJob
    pool: server
    steps:
    - ${{each agentId in parameters.agentIds}}:
      - task: InvokeRESTAPI@1
        inputs:
          connectionType: 'connectedServiceName'
          serviceConnection: 'AzureDevOpsServices'
          method: 'GET'
          headers: |
            {
            "Content-Type":"application/json", 
            "Authorization": "Bearer $(system.AccessToken)"
            }
          urlSuffix: '/$(orgName)/_apis/distributedtask/pools/$(poolId)/agents/${{agentId}}?includeAssignedRequest=true&api-version=7.1-preview.1'
          waitForCompletion: 'false'
          successCriteria: 'eq(root.assignedRequest.reservedAgent.id, ${{agentId}})'
        continueOnError: true

- stage: StageOnSelfhostedAgentPool
  dependsOn: StageCheck
  condition: eq(dependencies.StageCheck.result, 'SucceededWithIssues')
  variables:
    stageDependencies: $[convertToJson(stageDependencies)]
  jobs:
  - job: AgentJob
    pool: Default
    steps:
    - script: |
        echo "Detected idle agents in the Default self-hosted agent pool"
        echo "$(stageDependencies)"
      displayName: Run agent job in Default self-hosted agent pool

- stage: StageOnMShostedAgentPool
  dependsOn: StageCheck
  condition: eq(dependencies.StageCheck.result, 'Succeeded')
  variables:
    stageDependencies: $[convertToJson(stageDependencies)]
  jobs:
  - job: AgentJob
    pool:
      vmImage: ubuntu-latest
    steps:
    - script: |
        echo "No idle agents in the Default self-hosted agent pool"
        echo "$(stageDependencies)"
      displayName: Run agent job in MS-hosted agent pool

Кроме того, вы, вероятно, сможете ознакомиться с функциями Управляемых пулов DevOps и Пулов агентов VMSS, которые могут вам подойти.

Другие вопросы по теме

Похожие вопросы

Интеграция Microsoft Teams с AzureDevops Boards для создания рабочих элементов по требованию
Ошибка настройки агента DevOps TF400813: пользователь «пользователь» не имеет прав на доступ к этому ресурсу. Не удалось подключиться. Попробуйте еще раз или нажмите Ctrl-C, чтобы выйти
Azure DevOps Yaml – как установить глобальные переменные из параметров?
Azure Devops REST API — публикуйте артефакты сборки из локального хранилища
Способ запуска сценария bash перед перехватом перед развертыванием с помощью безагентного сервера в Azure Devops
Конвейер Azure Devops с дополнительным этапом, запускаемым вручную
Как запретить принудительную отправку только на главную, но при этом разрешить прямую (не принудительную) отправку в репозиториях git Azure DevOps
Azure Pipelines — обработка одинаковых имен переменных в разных группах переменных
Не могу найти нужные артефакты
Уменьшение объема хранилища пакетов Azure Devops