Параметр отключения создания репозиториев TFVC
В этом обновлении мы введем новый параметр для отключения создания репозиториев TFVC. Это изменение фокусируется на новых проектах, гарантируя, что существующие репозитории TFVC остаются невредимыми.
Кроме того, мы рады сообщить о том, что в Azure Pipelines новая конечная точка REST API доступна для запроса токенов OIDC! Это позволяет разработчикам задач создавать idTokens для проверки подлинности идентификатора Записи, повышая безопасность и удобство использования.
Наконец, в Azure Boards, области и пути итерации теперь можно удалить только в том случае, если они больше не связаны с рабочими элементами. Это улучшение предотвращает нарушения работы и гарантирует, что команды сохраняют доступ к их доскам и невыполненной работе.
Дополнительные сведения см. в заметках о выпуске.
Расширенная безопасность GitHub для Azure DevOps
Azure Boards:
Azure Repos
Azure Pipelines
- Доступ к Служебная шина Azure из конвейеров с помощью проверки подлинности идентификатора Microsoft Entra
- Конвейеры и задачи заполняют переменные для настройки проверки подлинности федерации удостоверений рабочей нагрузки
- Повторные попытки для задач сервера
- Задачи, использующие версию запуска узла конца жизни для выполнения предупреждений
- DockerCompose0 использует Docker Compose версии 2 в режиме совместимости версии 1
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 и не повлияет на существующие.
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, обратите внимание, что эти задачи еще не поддерживают федерацию удостоверений рабочей нагрузки. Мы рекомендуем разработчикам задач включить федерацию удостоверений рабочей нагрузки для улучшения мер безопасности.
Задачи, которые принимают входные 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 недоступна на агенте.
Однако режим совместимости не решает все проблемы совместимости. См. статью "Миграция на Создание версии 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,
Сильвиу Андреика