sourcetip

젠킨스 파이프라인에서 직접 powershell 명령 실행

fileupload 2023. 10. 5. 23:28
반응형

젠킨스 파이프라인에서 직접 powershell 명령 실행

파이프라인 그루비 스크립트에서 PowerShell 명령을 직접 호출할 수 있습니까?Jenkins에서 사용자 지정 작업을 사용하는 동안 PowerShell 플러그인으로 명령을 호출할 수 있습니다.하지만 그루비한 대본에는 이것을 사용할 수 있는 토막글이 없습니다.

저도 노력했습니다.sh()그러나 이 명령어는 명령어 내부의 여러 줄과 주석을 허용하지 않는 것 같습니다.

Groovy-Script에서 PowerShell 스크립트를 호출하려면:

  • 당신은 그것을 사용해야 합니다.bat지휘.
  • 그런 다음에는 Error Code(에러 코드)를 확인해야 합니다.errorlevel) 변수가 올바르게 반환됩니다(EXIT 1결과적으로.FAILED작업).
  • 마지막으로 PowerShell-Plugin과 호환되기 위해서는$LastExitCode고려할 것입니다.
  • 저는 '파워셸'이 파이프라인에서 사용 가능하다는 것을 알았지만, 여러 문제가 있기 때문에 이 변형을 선호합니다.아직 대기 중입니다.저는 사실 '돈 킬미' 행동에 문제가 있습니다.

Jenkins 2.207 powershell plugin 1.4 이후로, 저는 모든 통화를 공식적인 powershell pipeline 명령으로 대체했습니다.저는 이제 그것을 사용하는 것을 추천합니다.가장해야 하는 것은 주의하십시오.\$ErrorActionPreference='Stop';Write-Error시 전원 플러그인의 문제로 인해 중단되도록 하려면 Script에 저장해야 합니다.

그 퍼퓨즈를 위해 저는 어떤 파이프라인 스크립트에도 통합될 수 있는 약간의 그루브한 방법을 썼습니다.

def PowerShell(psCmd) {
    psCmd=psCmd.replaceAll("%", "%%")
    bat "powershell.exe -NonInteractive -ExecutionPolicy Bypass -Command \"\$ErrorActionPreference='Stop';[Console]::OutputEncoding=[System.Text.Encoding]::UTF8;$psCmd;EXIT \$global:LastExitCode\""
}

[EDIT] UTF8 OutputEncoding: Server 2016 및 Win10과 잘 작동하는 [/EDIT]을 추가했습니다. [EDIT] '%' 마스크[/EDIT]를 추가했습니다.

그러면 Pipeline-Script에서 스크립트를 다음과 같이 부를 수 있습니다.

stage ('Call Powershell Script')
{
    node ('MyWindowsSlave') {
        PowerShell(". '.\\disk-usage.ps1'") 
    }
}

그 방법의 가장 좋은 점은 당신이 전화를 할 수 있다는 것입니다.CmdLet스크립트에서 이 작업을 수행할 필요 없이 가장 정확하게 수행할 수 있습니다.

ps1 호출하여 정의CmdLet, 그 다음에 전화를 합니다.CmdLet

PowerShell(". '.\\disk-usage.ps1'; du -Verbose")
  • Env()와 함께 사용하는 것을 잊지 마십시오. 그러면 Powershell 플러그인과 완전히 호환되는 것보다 낫습니다.
  • 스크립트를 다음으로 연기합니다..스크립트가 오류 코드를 반환할 때 단계가 실패했는지 확인하려면 다음을 사용합니다.&당신이 상관하지 않는다면요.

이제 PowerShell 스크립트 호출이 지원됩니다.powershellJenkins 블로그에 공지된 바와 같이.

설명서에는 여러 줄 스크립트를 지원한다고 나와 있습니다.

Pipeline Nodes and Processes Plugin 버전 2.28부터는 'powershell'을 직접 사용할 수 있습니다.

Eg: powershell(". '.Test.ps1'") 

를 .sh다음과 같은 명령:

sh """
    echo 'foo'
    # bar
    echo 'hello'
"""

댓글은 여기서 지원됩니다.

언급URL : https://stackoverflow.com/questions/42436370/executing-powershell-command-directly-in-jenkins-pipeline

반응형