Azure DevOps Pipelines에서 powershell 스크립트를 실행하는 방법

안녕하세요 여러분, 오늘 우리는 Azure DevOps 파이프라인에서 powershell 스크립트를 실행하는 방법을 배울 것입니다. 다른 스크립팅 언어에 비해 Powershell 스크립트의 이점이 무엇인지 알아보려면 Microsoft의 공식 문서documentation를 참조하십시오. 이 문서의 목표:
  • Azure DevOps 파이프라인에서 Powershell을 실행하는 방법
  • Azure DevOps API와 통신하는 Powershell 스크립트 생성
  • 변수를 저장하는 방법, Powershell에 인수로 전달할 수 있는 Azure 파이프라인의 비밀
  • powershell 스크립트에서 생성된 csv에서 게시된 아티팩트를 생성합니다
  • .

    먼저 Azure DevOps 프로젝트의 리포지토리를 열고 여기에 스크립트를 추가합니다. 아래는 Powershell 스크립트이며 스크립트 이름은 ps1 확장자를 가진 모든 것이 될 수 있습니다. azureoperationsscript.ps1을 유지하고 있습니다.

    [CmdletBinding()]
    param (
        $OrganizationUrl,
        $PAT,
        $OrganizationName
    )
    
    $orgUrl = $OrganizationUrl
    $pat = $PAT
    
    # Create header with PAT
    $token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($pat)"))
    $header = @{authorization = "Basic $token"}
    
    
    # Get the list of all projects in the organization
    $projectsUrl = "$OrganizationUrl/_apis/projects?api-version=5.1"
    $projects = Invoke-RestMethod -Uri $projectsUrl -Method Get -ContentType "application/json" -Headers $header
    $projects.value | ForEach-Object {
       Write-Host $_.id $_.name
       $user =[pscustomobject]@{
            'id' = $_.id
            'name' = $_.name
        }
        $user | Export-CSV -Path allprojnameid.csv -Append -NoTypeInformation -Force
    }
    


    기본 Powershell 스크립팅 구문 및 구조를 모르는 경우 자습서series를 참조하십시오. Invoke-RestMethod cmdlet은 풍부하게 구조화된 데이터를 반환하는 REST 웹 서비스에 HTTP 및 HTTPS 요청을 보냅니다.
    스크립트는 명령 인수에서 전달된 매개 변수를 가져온 다음 Azure DevOps Rest API를 호출하여 조직 내의 모든 프로젝트를 반환하고 마지막으로 CSV 파일에 저장합니다.

    스크립트가 준비되면 스크립트를 호출하여 Azure DevOps API 작업을 수행할 파이프라인을 만들 차례입니다.

    프로젝트 -> 파이프라인 -> 변수를 추가하려는 파이프라인으로 이동하고 Powershell 스크립트를 실행하면 편집 옵션이 표시되며 클릭합니다.



    아래 이미지에 따라 모든 파이프라인에서 액세스할 수 있는 변수(변수 값을 비밀로 유지할 수도 있음)를 설정합니다.





    이제 프로젝트의 파이프라인 섹션으로 이동하여 새 파이프라인을 만듭니다.
    리포지토리의 코드를 기반으로 Azure는 몇 가지 파이프라인을 제안하며 "스타터 파이프라인"을 선택할 수 있습니다. 그리고 아래 yml 파이프라인 콘텐츠를 스타터 파이프라인 코드로 바꿉니다.

    trigger:
    - main
    
    stages:
      - stage: Build
        pool:
          vmImage: 'windows-latest'
        jobs:
        - job: Build
          displayName: 'Powershell Script Execute'
          steps:
            - task: PowerShell@2
              displayName: 'Run Powershell Build'
              inputs:
                targetType: 'inline'
                script: '.\azureoperationsscript.ps1 -OrganizationUrl $(OrganizationUrl) -PAT $(PAT) -OrganizationName $(OrganizationName)'
    
            - task: PublishBuildArtifacts@1
              inputs:
                PathtoPublish: 'D:\a\1\s\allprojnameid.csv'
                ArtifactName: 'drop'
                publishLocation: 'Container'
    


    위의 파이프라인에서 무슨 일이 일어나고 있는지 알려줍니다. 첫 번째 작업인 -task: PowerShell@2는 Azure DevOps 리포지토리 내에 배치된 powershell 스크립트를 실행하는 데 사용되는 Azure DevOps 파이프라인 작업입니다. 입력에서 스크립트가 저장소에 있는 경로를 제공하십시오.

    참고: 위에서 저장한 변수를 인수로 전달하면 GetAllProjects.ps1의 매개 변수에 액세스할 수 있습니다.

    두 번째 작업 - 작업: PublishBuildArtifacts@1은 작업입니다.
    Azure Pipelines, 파일 공유 또는 TFS에 빌드 아티팩트를 게시하는 일을 담당합니다. 입력에서 PathtoPublish 필드는 csv 파일을 내보낸 파일의 경로를 예상합니다.

    모든 설정!!!
    파이프라인을 저장하면 파이프라인 섹션으로 다시 이동하여 실행 중인 파이프라인을 볼 수 있습니다. 성공적으로 실행되면 스크립트에 의해 생성된 csv 파일에서 나온 아티팩트가 게시된 것을 볼 수 있습니다.



    고맙습니다.

    좋은 웹페이지 즐겨찾기