Параметр отключения создания репозиториев 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 недоступна на агенте.
Однако режим совместимости не решает все проблемы совместимости. См. статью Переход на 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,
Сильвиу Андреика