Azure DevOps Server 2020에 Visual Studio 2022 추가



Azure DevOps Server의 다음 주 버전(2022?)이 Visual Studio 2022에 대한 공식 지원을 제공하거나 운이 좋다면 다음 업데이트 팩인 Azure DevOps Server 2020.2가 나올 것으로 생각됩니다.

Azure DevOps 클라우드에서 작업 다운로드



Azure DevOps 조직에 대한 액세스 권한이 있는 경우 저장소에서 직접 원본 zip을 다운로드하여 대상 프로젝트 컬렉션에 설치할 수 있습니다.

$tasksToDownload = @("VSBuild", "VsTest", "VsTest", "VsTestPlatformToolInstaller", 
                  "MSBuild", "DotNetCoreInstaller", "DotNetCoreCLI")

$org = "<<insert source org>>"
$pat = "<<insert PAT | Agent Pool Manage>>"
$projectCollectionUri = "https://yourtfs/yourcollection"

$url = "https://dev.azure.com/$org"
$header = @{authorization = "Basic $([Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(".:$pat")))"}

$tasks = Invoke-RestMethod -Uri "$url/_apis/distributedtask/tasks" -Method Get -ContentType "application/json" -Headers $header | ConvertFrom-Json -AsHashtable

foreach ($taskName in $tasksToDownload)
{
    $taskMetadatas = $tasks.value | ?{ $_.name -ieq $taskName }
    foreach ($taskMetadata in $taskMetadatas)
    {
        $taskid = $taskMetadata.id
        $taskversion = "$($taskMetadata.version.major).$($taskMetadata.version.minor).$($taskMetadata.version.patch)"
        $taskZip = "$taskName.$taskid.$taskversion.zip"
        Invoke-WebRequest -Uri "$url/_apis/distributedtask/tasks/$taskid/$taskversion" -OutFile $taskZip -Headers $header

        & tfx build tasks upload --task-zip-path "$taskZip" --service-url $projectCollectionUri
    }
}


Azure DevOps 조직에서 직접 미리 빌드된 작업 다운로드

작업을 수동으로 빌드하고 직접 설치



Visual Studio 2022를 사용하려는 경우 최신 버전의 작업을 서버에 수동으로 푸시할 수 있습니다. 나는 당신을 위해 그것을 할 스크립트를 만들었습니다:

# Update the list of tasks you need below
$tasksToBuild = @("VSBuildV1", "VsTestV1", "VsTestV2", "VsTestPlatformToolInstallerV1", 
                  "MSBuildV1", "DotNetCoreInstallerV1", "DotNetCoreCLIV2")

# Update the collection uri below
$projectCollectionUri = "https://yourtfs/yourcollection"

$outputDir = md _build -force

& git clone https://github.com/microsoft/azure-pipelines-tasks.git --quiet
cd azure-pipelines-tasks

& git config --local pager.branch false
$branches = & git branch -r
$version = (($branches | Select-String -pattern "(?<=origin/releases/m)\d+$").Matches) | %{ [int32]$_.Value } | measure-object -maximum
$version = $version.Maximum

& git reset --hard origin/releases/m$version

& npm install
& npm install tfx-cli -g

foreach ($task in $tasksToBuild)
{
    & node make.js build --task $task

    $taskDir = "$outputDir/$task"
    copy "./_build/Tasks/$task" $taskDir -Recurse

    & tfx build tasks upload --task-path "./_build/Tasks/$task" --service-url $projectCollectionUri
}


Azure DevOps Server 프로젝트 컬렉션에 직접 작업 설치

작업을 수동으로 빌드하고 확장을 통해 설치



또는 사용자 지정 확장 팩을 빌드하고 Azure DevOps Marketplace에 (비공개로) 업로드합니다. 확장 매니페스트를 만들어야 합니다.

{
  "manifestVersion": 1,
  "name": "Visual Studio 2022",
  "version": "1.196.0",
  "publisher": "jessehouwing",
  "targets": [
    {
      "id": "Microsoft.VisualStudio.Services"
    }
  ],
  "public": false
  "description": "Visual Studio 2022",
  "categories": [
    "Azure Pipelines"
  ],
  "files": [
    {
      "path": "_build"
    }
  ],
  "contributions": [
  ]
}


비공개 확장에 대한 확장 매니페스트를 만듭니다.

그런 다음 아래 스크립트를 실행하여 위의 매니페스트를 업데이트하고 지정한 작업으로 확장을 패키징합니다. 서버의 로컬 마켓플레이스에 확장을 업로드하거나 자체 게시자의 Azure DevOps Marketplace에 확장을 업로드합니다.

# Update the list of tasks you need below
$tasksToBuild = @("VSBuildV1", "VsTestV1", "VsTestV2", "VsTestPlatformToolInstallerV1", 
                  "MSBuildV1", "DotNetCoreInstallerV1", "DotNetCoreCLIV2")

# Update the marketplace details below
$publisherId = "jessehouwing"
$extensionId = "visual-studio-2022-tasks"

$outputDir = md _build -force

$extensionManifest = gc "vss-extension.json" | ConvertFrom-Json
$extensionManifest.contributions = @()

& git clone https://github.com/microsoft/azure-pipelines-tasks.git --quiet
cd azure-pipelines-tasks

& git config --local pager.branch false
$branches = & git branch -r
$version = (($branches | Select-String -pattern "(?<=origin/releases/m)\d+$").Matches) | %{ [int32]$_.Value } | measure-object -maximum
$version = $version.Maximum

& git reset --hard origin/releases/m$version

& npm install

foreach ($task in $tasksToBuild)
{
    & node make.js build --task $task

    $taskDir = "$outputDir/$task"
    copy "./_build/Tasks/$task" $taskDir -Recurse

    $extensionManifest.contributions += @{
        "id" = "$task"
        "type" = "ms.vss-distributed-task.task"
        "targets" = @("ms.vss-distributed-task.tasks")
        "properties" = @{
            "name" = "_build/$task"
        }
    }
}

cd ..

$extensionManifest.version = "1.$version.0"
$extensionManifest | ConvertTo-Json -depth 100 | Out-File "vss-extension.json" -Encoding utf8NoBOM

& npm install tfx-cli -g
& tfx extension create --manifests vss-extension.json --output-path visual-studio-2022-tasks.vsix --publisher $publisherId --extension-id $extensionId


필요한 작업을 위한 개인 확장 팩 빌드

Microsoft에서 업데이트된 작업을 릴리스하면 프로젝트 컬렉션에서 확장을 제거하기만 하면 됩니다.

필수 에이전트 버전



Visual Studio 2022를 자동 감지하려면 azure-pipelines-agent repository에서 최신 에이전트를 설치하거나 수동으로 에이전트에 기능을 추가해야 합니다.

이러한 트릭은 Azure DevOps Server 버전에서 사용할 수 없는 UI 확장 또는 서비스 연결 유형에 의존하지 않는 한 azure-pipelines-tasks repository 의 대부분의 작업에 대해 작동합니다.

좋은 웹페이지 즐겨찾기