Jenkins 서버에 3 일 동안 실행 된 작업이 있지만 아무것도하지 않습니다. 모서리에있는 작은 X를 클릭해도 아무 것도 수행되지 않으며 콘솔 출력 로그에도 아무 것도 표시되지 않습니다. 빌드 서버를 확인했는데 실제로 작업이 전혀 실행되지 않는 것 같습니다.
젠킨스에게 파일이나 잠금 등을 편집하여 작업이 “완료”되었다고 알리는 방법이 있습니까? 많은 작업이 있으므로 서버를 다시 시작하고 싶지 않습니다.
답변
“Jenkins 관리”> “스크립트 콘솔”로 이동하여 서버에서 스크립트를 실행하여 중단 스레드를 중단하십시오.
모든 라이브 스레드를 가져 Thread.getAllStackTraces()
오고 걸려있는 스레드를 중단 할 수 있습니다 .
Thread.getAllStackTraces().keySet().each() {
t -> if (t.getName()=="YOUR THREAD NAME" ) { t.interrupt(); }
}
최신 정보:
스레드를 사용하는 위의 솔루션은 최신 Jenkins 버전에서 작동하지 않을 수 있습니다. 고정 된 파이프 라인을 중단하려면 대신 alexandru-bantiuc에 의한 이 솔루션을 참조하여 다음 을 실행하십시오.
Jenkins.instance.getItemByFullName("JobName")
.getBuildByNumber(JobNumber)
.finish(
hudson.model.Result.ABORTED,
new java.io.IOException("Aborting build")
);
답변
나는 또한 같은 문제가 있었고 Jenkins Console을 통해 수정했습니다.
“Jenkins 관리”> “스크립트 콘솔”로 이동하여 스크립트를 실행하십시오.
Jenkins .instance.getItemByFullName("JobName")
.getBuildByNumber(JobNumber)
.finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"));
JobName과 JobNumber를 지정하면됩니다.
답변
경우에 당신은 가지고 Multibranch 파이프 라인 -job을 (당신은 젠킨스 – 관리자입니다)에서의 사용 젠킨스 스크립트 콘솔 이 스크립트 :
Jenkins.instance
.getItemByFullName("<JOB NAME>")
.getBranch("<BRANCH NAME>")
.getBuildByNumber(<BUILD NUMBER>)
.finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"));
에서 https://issues.jenkins-ci.org/browse/JENKINS-43020
작업의 전체 이름 (경로)이 무엇인지 확실하지 않은 경우 다음 스 니펫을 사용하여 모든 항목의 전체 이름을 나열 할 수 있습니다.
Jenkins.instance.getAllItems(AbstractItem.class).each {
println(it.fullName)
};
에서 https://support.cloudbees.com/hc/en-us/articles/226941767-Groovy-to-list-all-jobs
답변
이 작업에 모니터링 플러그인 을 사용 합니다 . 플러그인 설치 후
- Jenkins 관리> Hudson / Jenkins 마스터 모니터링으로 이동하십시오.
- 오른쪽의 작은 파란색 링크 인 스레드 세부 사항을 펼치십시오.
-
중단 된 작업 명 검색
스레드 이름은 다음과 같이 시작됩니다
Executor #2 for master : executing <your-job-name> #<build-number>
-
원하는 작업이있는 행 표의 오른쪽에있는 빨간색, 둥근 버튼을 클릭하십시오.
답변
“스크립트 콘솔”로 중지 할 수없는 빌드가 발생했습니다. 마지막으로 다음 단계로 문제를 해결했습니다.
ssh onto the jenkins server
cd to .jenkins/jobs/<job-name>/builds/
rm -rf <build-number>
restart jenkins
답변
첫 번째 제안 된 솔루션은 매우 가깝습니다. interrupt () 대신 stop ()을 사용하면 그루비 시스템 스크립트에서 끝없이 실행되는 런 어웨이 스레드도 죽입니다. 이것은 작업을 위해 실행되는 모든 빌드를 종료합니다. 코드는 다음과 같습니다.
Thread.getAllStackTraces().keySet().each() {
if (it.name.contains('YOUR JOBNAME')) {
println "Stopping $it.name"
it.stop()
}
}
