Поделиться через


Параметр отключения создания репозиториев TFVC

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

Кроме того, мы рады сообщить о том, что в Azure Pipelines новая конечная точка REST API доступна для запроса токенов OIDC! Это позволяет разработчикам задач создавать idTokens для проверки подлинности идентификатора Записи, повышая безопасность и удобство использования.

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

Дополнительные сведения см. в заметках о выпуске.

Расширенная безопасность GitHub для Azure DevOps

Azure Boards:

Azure Repos

Azure Pipelines

Azure Test Plans:

Расширенная безопасность GitHub для Azure DevOps

Документация по API обзора безопасности теперь доступна

Теперь доступна документация по API с помощью вкладки "Общие сведения о рисках расширенной безопасности". Используйте конечную точку /{organization}/_apis/reporting/summary/alerts для просмотра сводки критических сведений об оповещении во всех репозиториях с поддержкой расширенной безопасности. Убедитесь, что ADO PAT имеет vso.advsec разрешение, которое предоставляет возможность чтения оповещений, экземпляров результатов и экземпляров результатов анализа.

Azure Boards

Изменение для удаления области и путей итерации

Удаление области или пути итерации может быть нарушено. Он может переместить рабочие элементы в новый путь и может привести к тому, что команды теряют доступ к их доскам и невыполненной работе. Несмотря на предупреждения и запросы, пути иногда удаляются без полного понимания последствий. Чтобы устранить эту проблему, мы изменили поведение: пути к области и итерации теперь можно удалить только в том случае, если они больше не используются рабочими элементами.

Снимок экрана: область удаления.

Azure Repos

Новый параметр для отключения создания репозиториев TFVC

В последние годы новые функции не были добавлены в систему управления версиями Team Foundation (TFVC), так как Git стал предпочтительной системой управления версиями в Azure Repos. Все последние улучшения безопасности, производительности и специальных возможностей были сделаны исключительно в репозиториях Git, что привело к постоянному снижению использования TFVC. Хотя некоторые по-прежнему полагаются на TFVC и мы не намерены удалять этот набор функций, мы планируем постепенно исключить TFVC для новых проектов и организаций, а также для проектов, которые в настоящее время не используют TFVC.

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

Gif для демонстрации отключения создания репозиториев TFVC.

Azure Pipelines

Доступ к Служебная шина Azure из конвейеров с помощью проверки подлинности идентификатора Microsoft Entra

Теперь можно использовать проверку подлинности идентификатора Microsoft Entra для доступа к Служебная шина Azure из Azure Pipelines. Это позволяет воспользоваться федерацией удостоверений рабочей нагрузки, чтобы удалить управление секретами и Azure RBAC для точного контроля доступа.

Удостоверения, обращающиеся к Служебная шина Azure, необходимо предоставить одну из встроенных ролей Azure для Служебная шина Azure доступа к служебная шина.

задача PublishToAzureServiceBus@2

Новые PublishToAzureServiceBus@2 задачи можно настроить с помощью подключения службы Azure. Создайте подключение службы Azure и заполните serviceBusQueueName serviceBusNamespace свойства новой задачи:

- task: PublishToAzureServiceBus@2
  inputs:
    azureSubscription: my-azure-service-connection
    serviceBusQueueName: my-service-bus-queue
    serviceBusNamespace: my-service-bus-namespace
    useDataContractSerializer: false
    messageBody: |
      {
        "foo": "bar"
      }
Задачи сервера

Пользовательские задачи сервера (без агента), использующие ServiceBus выполнение, могут указывать подключение службы Azure как EndpointId и опущено ConnectionString. См . статью "Разработка задач сервера".

Конвейеры и задачи заполняют переменные для настройки проверки подлинности федерации удостоверений рабочей нагрузки

Конечная точка REST API для запроса маркеров OIDC теперь доступна в переменной конвейера System.OidcRequestUri . Разработчики задач могут использовать эту переменную для создания idToken для проверки подлинности с идентификатором Entra.

Если вы используете задачи Marketplace или пользовательские задачи для развертывания в Azure, обратите внимание, что эти задачи еще не поддерживают федерацию удостоверений рабочей нагрузки. Мы рекомендуем разработчикам задач включить федерацию удостоверений рабочей нагрузки для улучшения мер безопасности.

Снимок экрана: совместная работа oidc.

Задачи, которые принимают входные connectedService:AzureRM данные в task.json , можно обновить для поддержки федерации удостоверений рабочей нагрузки, выполнив следующие действия:

  • Используйте REST API Oidctoken для запроса idToken (стрелка 1 на схеме выше).
  • Exchange idToken для маркера доступа с помощью федеративного потока учетных данных API OAuth, указав idToken as client_assertion (стрелки 2 и 4 на схеме выше);
    или:
  • Для задач, которые выполняют роль оболочки вокруг средства, выполняющего проверку подлинности, используйте метод проверки подлинности средств для указания федеративного токена.

Задачи узла могут использовать пакет npm azure-pipelines-tasks-artifacts-common npm для получения idToken. Дополнительные сведения о реализации см. в примере кода.

Запрос нового idToken

Переменная System.OidcRequestUri конвейера и AZURESUBSCRIPTION_SERVICE_CONNECTION_ID переменная среды, предоставляемые в AzureCLI@2 задачах, AzurePowerShell@5 позволяют авторам конвейера проходить проверку подлинности из собственного скрипта:

PowerShell Az
- task: AzurePowerShell@5
  inputs:
    azureSubscription: 'my-azure-subscription'
    scriptType: inlineScript
    inline: |        
      # Request fresh idToken
      Invoke-RestMethod -Headers @{
                        Authorization  = "Bearer $(System.AccessToken)"
                        'Content-Type' = 'application/json'
                      } `
                      -Uri "${env:SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${env:AZURESUBSCRIPTION_SERVICE_CONNECTION_ID}" `
                      -Method Post `
                      | Select-Object -ExpandProperty oidcToken
                      | Set-Variable idToken

    # Fetch current context
    $azContext = Get-AzContext

    # Start new Az session
    Connect-AzAccount -ApplicationId $azContext.Account.Id `
                      -TenantId $azContext.Tenant.Id `
                      -SubscriptionId $azContext.Subscription.Id `
                      -FederatedToken $idToken
Azure CLI
- task: AzureCLI@2
  inputs:
    addSpnToEnvironment: true
    azureSubscription: 'my-azure-subscription'
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      # Request fresh idToken
      OIDC_REQUEST_URL="${SYSTEM_OIDCREQUESTURI}?api-version=7.1&serviceConnectionId=${AZURESUBSCRIPTION_SERVICE_CONNECTION_ID}"
      ARM_OIDC_TOKEN=$(curl -s -H "Content-Length: 0" -H "Content-Type: application/json" -H "Authorization: Bearer $(System.AccessToken)" -X POST $OIDC_REQUEST_URL | jq -r '.oidcToken')

      # Save subscription context
      ARM_SUBSCRIPTION_ID=$(az account show --query id -o tsv)

      # New az-cli session
      az login --service-principal -u $servicePrincipalId --tenant $tenantId --allow-no-subscriptions --federated-token $ARM_OIDC_TOKEN
      az account set --subscription $ARM_SUBSCRIPTION_ID

Повторные попытки для задач сервера

Задачи сервера, которые вызывают внешние системы, например AzureFunction или InvokeRESTAPI, иногда могут завершать сбой из-за временных ошибок, таких как исчерпание вычислительных ресурсов. Ранее такие сбои могут привести ко всему заданию и потенциально конвейеру.

Чтобы повысить устойчивость к временным ошибкам, мы ввели поддержку retryCountOnTaskFailure свойства в задачах сервера. Предположим, что в конвейере есть следующий код YAML:

- stage: deploy
  jobs:
  - job:
    pool: server
    steps:
    - task: AzureFunction@1
      retryCountOnTaskFailure: 2
      inputs:
        function: 'https://api.fabrikamfiber.com'
        key: $(functionKey)
        method: 'POST'
        waitForCompletion: 'false'

Если https://api.fabrikamfiber.com возникает временная ошибка, Azure Pipelines повторит запрос до трех раз (начальная попытка плюс две повторные попытки, указанные в параметре retryCountOnTaskFailure). Каждая повторная попытка включает увеличение периода ожидания. Максимально допустимое число повторных попыток — 10.

Он retryCountOnTaskFailure недоступен для ManualValidation задачи и других задач, которые не включают вызовы внешней системы.

Задачи, использующие версию запуска узла конца жизни для выполнения предупреждений

Задачи конвейера, использующие версию узла, больше не поддерживаются , начнут получать предупреждения:

Версия <version> задачи TaskName зависит от версии узла (10), которая является конечной. Обратитесь к владельцу расширения для обновленной версии задачи. Обслуживающие задачи должны просмотреть рекомендации по обновлению узла: https://aka.ms/node-runner-guidance

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

variables:
  AZP_AGENT_CHECK_IF_TASK_NODE_RUNNER_IS_DEPRECATED: false

DockerCompose@0 использует Docker Compose версии 2 в режиме совместимости версии 1

Docker Compose версии 1 достигнет конца жизни и будет удален из размещенных агентов 24 июля 2024 года. Мы обновили задачу DockerCompose@0 , чтобы использовать Docker Compose версии 2 в режиме совместимости версии 1, если Docker Compose версии 1 недоступна на агенте.

Однако режим совместимости не решает все проблемы совместимости. См. статью Переход на Compose версии 2. Некоторым пользователям потребуется больше времени для обновления проектов Docker Compose для совместимости с Docker Compose версии 2. В этих случаях следуйте этим инструкциям, чтобы использовать задачу DockerComposeV0 с docker-compose версии 1.

ПРИМЕЧАНИЕ. Это руководство основано на автономной документации по установке Compose

Использование docker-compose версии 1 в Windows

Добавьте шаг PowerShell в конвейер, чтобы скачать docker-Compose версии 1.29.2 и использовать его с задачей DockerComposeV0 в Windows:

variables:
    dockerComposePath: C:\docker-compose

steps:
- powershell: |
    mkdir -f $(dockerComposePath)
    # GitHub now requires TLS1.2. In PowerShell, run the following
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    Start-BitsTransfer -Source "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-windows-x86_64.exe" -Destination $(dockerComposePath)\docker-compose.exe
  displayName: Download docker-compose
- task: DockerCompose@0
  inputs:
    containerregistrytype: 'Azure Container Registry'
    dockerComposeFile: '**/docker-compose.yml'
    action: 'Run a Docker Compose command'
    dockerComposeCommand: 'run'
    dockerComposePath: $(dockerComposePath)\docker-compose.exe

Использование docker-compose версии 1 в Linux

Добавьте шаг bash в конвейер, чтобы скачать Docker-Compose версии 1.29.2 и использовать его с задачей DockerComposeV0 в Linux:

variables:
    dockerComposePath: /tmp/docker-compose

steps:
- bash: |
    sudo mkdir $(dockerComposePath)
    sudo curl -SL https://github.com/docker/compose/releases/download/1.29.2/docker-compose-linux-x86_64 -o $(dockerComposePath)/docker-compose
    sudo chmod 755 $(dockerComposePath)/docker-compose
  displayName: Download docker-compose
- task: DockerCompose@0
  inputs:
    containerregistrytype: 'Azure Container Registry'
    dockerComposeFile: $(Build.SourcesDirectory)/DockerComposeV0/docker-compose.yml
    action: 'Run a Docker Compose command'
    dockerComposeCommand: 'run'
    dockerComposePath: $(dockerComposePath)/docker-compose

Планы тестирования Azure

Расширение тестирования и обратной связи в манифесте версии 3

Мы рады сообщить о новом обновлении расширения Azure DevOps Test and Feedback! Это обновление переместит нашу реализацию с манифеста версии 2 на версию 3, выравнивая расписание нерекомендуации Google для манифеста версии 2.

Хотя основные функции расширения остаются неизменными, это обновление повышает безопасность и производительность. Обновленное расширение будет постепенно развертываться в браузерах Chrome и Edge в ближайшие недели. Мы будем отслеживать производительность и обратную связь, чтобы обеспечить плавный переход перед расширением развертывания на основе результатов.

Дополнительные сведения см. в нашей последней записи блога об этом обновлении. Расширение тестирования и обратной связи в манифесте версии 3

Следующие шаги

Примечание.

Эти функции будут развернуты в течение следующих двух-трех недель.

Перейдите к Azure DevOps и посмотрите.

Отправка отзыва

Мы хотели бы услышать то, что вы думаете об этих функциях. Используйте меню справки, чтобы сообщить о проблеме или указать предложение.

Внести предложение

Вы также можете получить советы и ваши вопросы, ответы сообщества на Stack Overflow.

Thanks,

Сильвиу Андреика