Общедоступная доступность правил автоматизации команды и улучшенная проверка AB#
Мы рады сообщить, что улучшенная проверка AB# приложением Azure Boards в GitHub и правилах team Automation общедоступны! Мы улучшили проверку AB#, чтобы получать уведомления о недопустимой ссылке на рабочий элемент. В правилах team Automation теперь можно настроить каждый уровень невыполненной работы, чтобы автоматизировать открытие и закрытие или разрешение рабочих элементов на основе состояний дочернего элемента.
В этом обновлении также представлена поддержка пользовательских запросов CodeQL в сканировании кода! Это позволит создавать собственные запросы, предназначенные для выявления проблем, относящихся к базе кода.
Дополнительные сведения см. в заметках о выпуске.
Расширенная безопасность GitHub для Azure DevOps
Azure Boards
Azure Pipelines
- Обновление устаревших задач до 31 января
- Размещенные агенты Майкрософт используют PowerShell 7.4
- Срок действия новых секретов подключения службы Azure истекает через три месяца
Расширенная безопасность GitHub для Azure DevOps
Пользовательские запросы CodeQL теперь поддерживаются в GitHub Advanced Security для Azure DevOps
Мы рады сообщить о поддержке пользовательских запросов CodeQL в сканировании кода! Это позволяет создавать собственные запросы, предназначенные для выявления проблем, относящихся к базе кода. Теперь вы можете создавать и публиковать пакеты, содержащие пользовательские запросы, выполнять эти запросы в конвейерах и настраивать обнаружение уязвимостей, относящихся к вашей организации.
Дополнительные сведения об использовании пользовательских запросов для сканирования кода в GitHub Advanced Security для Azure DevOps см. в статье "Проверка кода" для GitHub Advanced Security для Azure DevOps.
Мы ценим входные данные. Если у вас есть вопросы или отзывы, мы рекомендуем вам взаимодействовать с нашим сообществом в Сообщество разработчиков.
Azure Boards
Интеграция GitHub — улучшенная проверка AB# общедоступна
Несколько спринтов назад мы объявили о предварительной версии для улучшения проверки AB# приложением Azure Boards в GitHub. Мы улучшили приложение, чтобы лучше уведомить пользователей о действительности ссылок рабочих элементов, помогая им выявлять и устранять все проблемы перед слиянием запроса на вытягивание.
После нескольких недель тестирования и обратной связи эта функция теперь доступна всем пользователям с помощью интеграции GitHub + Azure Boards.
Это первая из нескольких функций, которые мы делаем для улучшения текущей интеграции. Обязательно ознакомьтесь с другими функциями интеграции Azure Boards и GitHub, которые мы планировали в рамках общедоступной стратегии.
Внимание
По состоянию на 8.6.2024 приложение Azure Boards в GitHub больше не будет проверять ссылки AB#. Вы AB#
по-прежнему можете использовать синтаксис для связывания рабочих элементов в запросах на вытягивание GitHub, фиксаций и проблем, как можно было до этого изменения.
Правила автоматизации группы обычно доступны
Мы рады сообщить о выпуске этой функции всем клиентам Azure DevOps Service.
Примечание.
Эта функция будет развернута в течение следующих двух-трех недель. Она может быть недоступна вашей организации до начала февраля 2024 года.
Теперь можно настроить каждый уровень невыполненной работы, чтобы автоматизировать открытие и закрытие (или разрешение) рабочих элементов на основе состояния дочерних элементов. Существует два основных сценария, которые мы пытаемся решить.
- При активации одного дочернего элемента активируйте родительский элемент.
- При закрытии всех дочерних элементов закройте родительский элемент (или устраните его).
Чтобы включить эти параметры, щелкните конфигурацию уровня невыполненной работы для вашей команды. Затем перейдите на вкладку "Правила автоматизации>", чтобы увидеть два разных правила, которые можно применить к невыполненной работы. Каждый уровень невыполненной работы (требования, функции, эпические представления) можно настроить по-разному в зависимости от того, как ваша команда хочет работать.
Например, если для любой дочерней задачи задано значение "Активный", сделайте родительскую историю пользователя активной. Затем, когда все задачи завершены, задайте для записи пользователя значение "Закрытая".
Дополнительные сведения об этой функции см. в документации и этой записи блога.
Эта функция была приоритетна на основе этого запроса предложения Сообщество разработчиков.
Azure Pipelines
Обновление устаревших задач до 31 января
Мы отставим от устаревших задач 31 января 2024 г. Чтобы определить конвейеры, использующие эти задачи, мы включили предупреждение с предлагаемым альтернативным вариантом. Мы рекомендуем обновить конвейеры, чтобы использовать более новую версию задачи или альтернативу до 31 января 2024 г.
Ознакомьтесь с предыдущими объявлениями, связанными с устаревшими задачами:
- Объявление об отмене устаревших задач
- Объявление о задачах конвейера восстановления NuGet версии 1 и NuGet Installer версии 0
Размещенные агенты Майкрософт используют PowerShell 7.4
Все размещенные агенты Майкрософт начнут использовать PowerShell 7.2 LTS в PowerShell 7.4 LTS с 28 января. Ознакомьтесь с новыми функциональностью PowerShell 7.4 и PowerShell 7.4.
Запишите критические изменения и обновите скрипты соответствующим образом:
- Критические изменения между PowerShell 7.3 и 7.4 LTS
- Критические изменения между PowerShell 7.2 LTS и 7.3
- Обновлено поведение синтаксического анализа аргументов, управляемое с помощью
$PSNativeCommandArgumentPassing
. Приведенный ниже пример скрипта применяет то же поведение в Linux, macOS и Windows, явно устанавливая его$PSNativeCommandArgumentPassing
.
Срок действия новых секретов подключения службы Azure истекает через три месяца
Подключения к службе Azure, в которых Azure DevOps создает секрет, будут иметь срок действия секрета в течение трех месяцев вместо двух лет.
Чтобы устранить необходимость смены секретов, преобразуйте подключение службы для использования федерации удостоверений рабочей нагрузки. Приведенный ниже пример скрипта можно использовать для быстрого преобразования нескольких подключений службы Azure в федерацию удостоверений рабочей нагрузки:
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation
.LINK
https://aka.ms/azdo-rm-workload-identity-conversion
.EXAMPLE
./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#>
#Requires -Version 7.3
param (
[parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
[string]
[ValidateNotNullOrEmpty()]
$Project,
[parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
[uri]
[ValidateNotNullOrEmpty()]
$OrganizationUrl
)
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard"
#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798"
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')
#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
| Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
Write-Warning "No convertible service connections found"
exit 1
}
foreach ($serviceEndpoint in $serviceEndpoints) {
# Prompt user to confirm conversion
$choices = @(
[System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
)
$prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
$decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)
if ($decision -eq 0) {
Write-Host "$($choices[$decision].HelpMessage)"
} elseif ($decision -eq 1) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
continue
} elseif ($decision -ge 2) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
exit
}
# Prepare request body
$serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
$serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
$serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
$serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
$putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
# Convert service connection
az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
| ConvertFrom-Json | Set-Variable updatedServiceEndpoint
$updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
if (!$updatedServiceEndpoint) {
Write-Debug "Empty response"
Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
exit 1
}
Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}
Следующие шаги
Примечание.
Эти функции будут развернуты в течение следующих двух-трех недель.
Перейдите к Azure DevOps и посмотрите.
Отправка отзыва
Мы хотели бы услышать то, что вы думаете об этих функциях. Используйте меню справки, чтобы сообщить о проблеме или указать предложение.
Вы также можете получить советы и ваши вопросы, ответы сообщества на Stack Overflow.
Thanks,
Дэн Хеллем