내 젠킨스 파이프 라인 파일에서 나는 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);
이 잘 작동하지만 지금은 내 파이프 라인에서 오는 스크립트 조각을 승인 동일한 코드를 사용하고 싶습니다. 나는 scriptSnippet
가 scriptApproval.xml
파일에서 가져옵니다
def language = 'groovy'
def scriptSnippet = 'new groovy.json.JsonSlurperClassic';
와 첫 두 줄을 교환했다. 이 작업을 실행하면 scriptApproval.xml
파일에 새로운 <approvedScriptHashes>
항목이 추가되지만 스크립트 스 니펫이 포함 된 <pendingSignature>
항목은 제거되지 않습니다. 이것은 그것이 작동하지 않는다는 것을 의미합니다.
내 생각에 언어가 잘못되었지만 groovy-sh
또는 system-commands
과 같이 시도한 다른 값도 작동하지 않았습니다. 왜 작동하지 않는지 알고 싶습니까?
감사합니다.
'approveClasspathEntry' 메소드일까요? 여기서 전반적으로 무엇을하려고합니까? – mkobit
@mkobit 제 젠킨스 인스턴스를 처음부터 설정하는 스크립트가 있습니다. 내 젠킨스는 그 스크립트가 실행 된 후에 갈 준비가되어 있습니다. 이는 스크립트가 내 파이프 라인 작업에서 모든 코드 스 니펫을 승인해야하거나 파이프 라인 작업이 GUI를 통해 수동으로 스크립트를 승인하라는 요청과 함께 처음 실행시 실패 할 것임을 의미합니다. – Knitschi