[JIRA] 지라 API 사용하여 티켓 등록하기 (feat. 윈도우 쉘스크립트로 테스트)

2024. 10. 22. 18:13IT

반응형

리눅스에서는 curl 과 jq를 사용해서 처리해야 하는 일을 윈도우와 파워쉘로 해보려면 아래와 같이 해야한다.

 

Windows PowerShell에서는 jq 대신 JSON 데이터를 다루기 위해 Invoke-RestMethod 의 ConvertFrom-Json 을 사용할 수 있어 쉘 스크립트만 잘 작성해도 지라 API 테스트가 가능하다. 물론 포스트맨으로 작성해도 되는데, 이렇게 코드화 시켜두면 깃랩 CI 스크립트에도 응용해서 사용할 수 있다.

 

PowerShell의 Invoke-RestMethod 의 ConvertFrom-Json 은 JSON 데이터를 사용할 수 있는 객체로 변환해주기 때문에, 이를 활용해서 소나큐브 API에서 받은 JSON 데이터를 파싱하고 처리할 수 있다.

다음은 PowerShell에서 JSON 데이터를 처리하고 지라 티켓을 생성하는 방식으로 스크립트를 수정한 예시를 보자.

 

# SonarQube API로부터 BLOCKER와 CRITICAL 이슈를 가져옵니다.
$issues = Invoke-RestMethod -Uri "http://localhost:9000/api/issues/search?pageSize=500&componentKeys=[Your Project Key]&severities=BLOCKER,CRITICAL&types=BUG,VULNERABILITY"

# JSON 응답이 잘 들어왔는지 확인
$issues | ConvertTo-Json

# 전체 이슈 수 확인
$issueCount = $issues.total

# 이슈가 있는 경우 처리
if ($issueCount -gt 0) {
    Write-Host "$issueCount 건의 Blocker 및 Critical 이슈가 발견되었습니다. 개별 지라 티켓을 생성합니다."

    foreach ($issue in $issues.issues) {
        $message = $issue.message
        $severity = $issue.severity
        $component = $issue.component
        $line = if ($issue.line) { $issue.line } else { "N/A" }

        # 각 이슈에 대해 Jira 티켓 생성
        $jiraData = @{
            fields = @{
                project     = @{ key = "ITCOMPETENCE" }
                summary     = "[$severity] $message (컴포넌트: $component, 라인: $line)"
                description = "Detected $severity issue:`nMessage: $message`nSeverity: $severity`nComponent: $component`nLine: $line"
                issuetype   = @{ id = 10002 }
            }
        } | ConvertTo-Json -Compress

        # 지라 티켓 생성
        Invoke-RestMethod -Method Post -Uri "https://yourjira.com/rest/api/2/issue" -Headers @{
            Authorization = "Bearer [JIRA TOKEN]"
            "Content-Type" = "application/json"
        } -Body $jiraData
    }
} else {
    Write-Host "Blocker 또는 Critical 이슈가 없습니다. 지라 티켓을 생성하지 않습니다."
}

 

정리

  • Invoke-RestMethod: curl 대신 PowerShell에서는 Invoke-RestMethod를 사용해 REST API 요청을 보낼 수 있다.
  • ConvertFrom-Json: PowerShell의 JSON 데이터를 객체로 변환해주는 기능을 사용해 데이터를 다룰 수 있다.
  • JSON 필드 접근: $issue.message, $issue.severity 등으로 쉽게 필드를 접근할 수 있으며, 특정 필드가 없을 때 기본값을 설정하는 부분도 if 문을 통해 처리할 수 있다.

이 방법을 통해 윈도우 PoweShell 환경에서도 JSON 데이터를 파싱하고 지라 티켓을 생성 테스트를 할 수 있다.

반응형