2017-12-21 9 views
6

내 젠킨스 파이프 라인 파일에서 나는 JsonSlurperClassic을 사용하여 .json 파일에서 빌드 구성을 읽습니다. 그러나 이는 인 프로세스 스크립트 승인 페이지에서 승인해야하는 코드를 도입합니다. 이것은 GUI를 통해 할 때 잘 작동합니다.groovy 스크립트 콘솔을 통해 jenkinsfile에서 스크립트 스 니펫을 승인하는 방법은 무엇입니까?

그러나 나는 또한 추가 GUI 조작을 필요로하지 않는 준비가 된 기계를 작성해야하는 제 젠킨 기계를 자동으로 설정하는 스크립트를 가지고 있습니다. 이 스크립트는 이미 jenkins 스크립트 콘솔을 사용하여 슬레이브 시작 명령을 승인합니다. 이렇게하기 위해 스크립트 콘솔에서 실행되는 그루비 코드는 다음과 같습니다.

def language = 'system-command'; 
def scriptSnippet = 'ssh [email protected] java -jar ~/bin/slave.jar'; 

def scriptApproval = Jenkins.instance.getExtensionList(
    'org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval')[0]; 
def scriptHash = scriptApproval.hash(scriptSnippet, language); 
scriptApproval.approveScript(scriptHash); 

이 잘 작동하지만 지금은 내 파이프 라인에서 오는 스크립트 조각을 승인 동일한 코드를 사용하고 싶습니다. 나는 scriptSnippetscriptApproval.xml 파일에서 가져옵니다

def language = 'groovy' 
def scriptSnippet = 'new groovy.json.JsonSlurperClassic'; 

와 첫 두 줄을 교환했다. 이 작업을 실행하면 scriptApproval.xml 파일에 새로운 <approvedScriptHashes> 항목이 추가되지만 스크립트 스 니펫이 포함 된 <pendingSignature> 항목은 제거되지 않습니다. 이것은 그것이 작동하지 않는다는 것을 의미합니다.

내 생각에 언어가 잘못되었지만 groovy-sh 또는 system-commands과 같이 시도한 다른 값도 작동하지 않았습니다. 왜 작동하지 않는지 알고 싶습니까?

감사합니다.

+0

'approveClasspathEntry' 메소드일까요? 여기서 전반적으로 무엇을하려고합니까? – mkobit

+0

@mkobit 제 젠킨스 인스턴스를 처음부터 설정하는 스크립트가 있습니다. 내 젠킨스는 그 스크립트가 실행 된 후에 갈 준비가되어 있습니다. 이는 스크립트가 내 파이프 라인 작업에서 모든 코드 스 니펫을 승인해야하거나 파이프 라인 작업이 GUI를 통해 수동으로 스크립트를 승인하라는 요청과 함께 처음 실행시 실패 할 것임을 의미합니다. – Knitschi

답변

2

ScriptApproval#approveSignature 메서드를 사용할 수 있습니다. 다음은 Jenkins에서 작동하는 예제입니다. 2.85

def signature = 'new groovy.json.JsonSlurperClassic' 
org.jenkinsci.plugins.scriptsecurity.scripts.ScriptApproval.get().approveSignature(signature) 
+0

@Knitschi가 도움이됩니까? –

+0

늦게 답변 해 주셔서 감사합니다. 잘 작동합니다. – Knitschi