매 시간마다 실행하도록 구성된 jenkins 작업이 있습니다. 성공 빌드 메일을 하루에 한 번만 전자 메일로 보내고 싶습니다. Email-Ext는 모든 성공, 실패 등에 대한 이메일을 보낼 수있는 옵션을 제공합니다.하지만 내가 원했던 것은 성공 이메일을 한 번만 보낼 수있는 능력입니다.Jenkins : 하루에 한 번만 성공 이메일을 보냅니다. (작업은 @hourly로 실행됩니다)
답변
글쎄, 당신을 위해 할 수있는 플러그인이 없습니다. Jenkins의 기본 이메일 기능은 매우 간단하며 정상적으로 작동합니다. Email-ext plugin이 있지만이 하나가 더 많은 일을 할 수 있습니다. 모든
먼저, 이메일-EXT와 함께, 당신은 전자 우편으로 통지하도록 특정 트리거를 구성 할 수 있습니다 - 그것은 젠킨스의 기본 동작과 유사하다 성공 또는 실패,에있을 수 있습니다. 그런데 과 같이 더 세련된 것이 있습니다. 첫 번째 오류 및 은 여전히 실패합니다.입니다. 이렇게하면 Jenkins가 전자 메일을 보내는 대상 (받는 사람 목록, 커미터 또는 요청자)을 언제 그리고 누구에게 제어 할 수 있는지 알 수 있습니다. 제 경우에는 좋은 설정이 Jenkins에 의해 생성 된 이메일 트래픽에 많은 도움이 될 것입니다. 특정 상황에서 특정 개의 이메일을 특정 사용자 목록에 보낼 수 있습니다. - 훌륭합니다!
다른 옵션은 실제로 제어 수준이 필요하지 않고 전자 메일 트래픽을 하루에 하나의 요약으로 제한하려는 경우 메일 링리스트를 설정하는 것입니다. 대부분의 메일 링리스트 엔진은 일일 다이제스트을 모든 이메일 트래픽 중 목록에 보냅니다. 그것이 실제로는 장기적으로 좋은 선택 인 것처럼 느껴지지는 않지만 충분해야합니다. 나는 확실히 Email-ext 플러그인을 시도 할 것이다.
다이제스트 전자 메일은 좋은 생각이지만 나에게 해결 방법처럼 보입니다. 현재 나는 jenkins에서 2 개의 작업을 구성했습니다. 매시간마다 실행되는 작업과 특정 시간에만 실행되는 작업으로 하나의 성공 이메일 만 전송합니다. – Rajesh
항상 해결 방법이 될 것입니다. 그것을 직시하자 - 그런 특징이 없습니다. 하지만 플러그인을 작성하여 원하는대로 할 수 있습니다. 아직도, 일정한 특징 및 확장 한 전자 우편 플러그 접속 식 특징 외에 당신이 할 수있는 다량이 없다 * out-of-the-box * –
이것은 오래된 질문이며 이미 사용자 자신의 해결 방법을 찾았지만 비슷한 필요성이 있으며 어쨌든 내 솔루션을 공유 할 것이라고 생각했습니다. 내가 한 일은 실패한 국가의 일자리에 대한 일일 요약 전자 메일을 생성하는 것이 었습니다. 이는 근본적으로 단일 업무에 대해 하루에 한 번 성공 보고서를 보내는 것과 매우 유사합니다.
내 솔루션은 Email-Ext 플러그인의 사전 보내기 스크립트 기능과 결합 된 Groovy 빌드 단계를 사용합니다. 위의 의견에서 언급 한 Nabble thread에서 아이디어를 얻었습니다. Jenkins 사이트의 Email-Ext Recipes도 참조하십시오.
여기에는 Execute System Groovy Script 아래에 구성된 실패한 빌드를 결정하는 초기 Groovy 스크립트가 있습니다. 당신은 당신의 빌드가 성공 또는 실패 여부를 결정하기 위해 비슷한 뭔가를 할 수 :
// List the names of jobs you want to ignore for this check
ignore = [ ]
// Find all failed and unstable jobs
failed = hudson.model.Hudson.instance.getView("All").items.findAll{ job ->
job.getDisplayName() != "Daily Jenkins Job Nag" &&
!ignore.contains(job.getDisplayName()) &&
job.isBuildable() &&
job.lastCompletedBuild &&
(job.lastCompletedBuild.result == hudson.model.Result.FAILURE ||
job.lastCompletedBuild.result == hudson.model.Result.UNSTABLE)
}
// Log the job names so the build results are legible
failed.each { job ->
println(job.getDisplayName() +
" " + job.lastCompletedBuild.result +
" at build " + job.lastCompletedBuild.number +
" (" + job.lastCompletedBuild.timestamp.format("yyyy-MM-dd'T'HH:mm ZZZZ") + ")");
}
// Return failure if there are any failed jobs
return failed.size
그런 다음, 아래로
편집 가능한 이메일 알림 섹션에서, 나는 실패에 알리기 위해 이메일-EXT 플러그인을 설정합니다. 나는
일반 텍스트 (텍스트/일반)에
컨텐츠 유형을 설정 빈
기본 콘텐츠 왼쪽과 같이 다음을 설정
사전 보내 스크립트을 :
failed = hudson.model.Hudson.instance.getView("All").items.findAll{ job ->
job.getDisplayName() != "Daily Jenkins Job Nag" &&
job.isBuildable() &&
job.lastCompletedBuild &&
(job.lastCompletedBuild.result == hudson.model.Result.FAILURE ||
job.lastCompletedBuild.result == hudson.model.Result.UNSTABLE)
}
def output = StringBuilder.newInstance()
output << "<html>\n"
output << " <body>\n"
output << "<p>Jenkins reports the following failed jobs:</p>"
output << " <ul>\n"
failed.each { job ->
url = hudson.model.Hudson.instance.rootUrl + job.url + "/" + job.lastCompletedBuild.number + "/"
output << " <li>"
output << "<a href=\"" + url + "\">" + job.displayName + "</a>"
output << " " + job.lastCompletedBuild.result
output << " at build " + job.lastCompletedBuild.number
output << " (" + job.lastCompletedBuild.timestamp.format("yyyy-MM-dd'T'HH:mm ZZZZ") + ")"
output << "</li>\n"
}
output << " </ul>\n"
output << " </body>\n"
output << "</html>"
msg.setContent(output.toString(), "text/html")
열쇠는 당신이 가지고 있다는 것입니다 msg
개체에 대한 액세스는 MimeMessage입니다. MIME 메시지의 내용을 원하는대로 설정할 수 있습니다.
이 경우 실패한 작업 목록을 생성하고 있지만, 귀하의 경우 일일 1 회 성공 보고서를 받기를 원하는 메시지가 무엇이든됩니다.필요에 따라 Email-Ext가 실패한 빌드가 아닌 모든 빌드에 대한 결과를 보내도록 할 수 있습니다.
이전 이메일 이후 시간이 충분하지 않은 경우 전자 메일을 억제하는 방법은 어떻습니까? 요청 된 것이 정확하지는 않지만, 이와 같은 사전 전송 스크립트는 단순성을 고려할 가치가있을 수 있습니다.
if (build.result != hudson.model.Result.SUCCESS) {
cancel = true;
}
else {
try {
long minEmailGap = 1000 * 60 * 60 * 16; // 16 hours in milliseconds
File file = new File("/TimestampForMyJob.txt");
if (file.exists() == false) {
file.createNewFile();
}
else {
long currentTime = (new Date()).getTime();
if (file.lastModified() + minEmailGap > currentTime) {
cancel = true;
}
else {
file.setLastModified(currentTime);
}
}
}
catch(IOException e) {
// We can't tell whether the e-mail should be sent out or not, so we do nothing
// and it just gets sent anyway - probably the best we can do with this exception.
}
}
- 1. 반복 작업은 한 번만 실행됩니다.
- 2. 일정 작업은 한 번만
- 3. SonarQube를 기존 Jenkins 작업의 실행을 하루에 한 번만 수행하는 방법
- 4. 하루에 한 번만 삽입
- 5. 앱이 하루에 한 번만
- 6. 타이머가 한 번만 실행됩니다.
- 7. 매크로는 한 번만 실행됩니다.
- 8. ValueConverter는 한 번만 실행됩니다.
- 9. 스크립트는 한 번만 실행됩니다.
- 10. 스레드가 한 번만 실행됩니다.
- 11. GMSMapView는 한 번만 실행됩니다.
- 12. setInterval이 한 번만 실행됩니다.
- 13. 스레드가 한 번만 실행됩니다
- 14. Cocos2d 한 번만 실행됩니다.
- 15. onbeforeunload가 한 번만 실행됩니다.
- 16. OnClick은 한 번만 실행됩니다.
- 17. 옵저버는 한 번만 실행됩니다.
- 18. 소나를 하루에 한 번만 발사해도 충분합니까?
- 19. 자바 스크립트는 한 번만 실행됩니다.
- 20. Else 루프는 한 번만 실행됩니다.
- 21. jQuery 플러그인은 한 번만 실행됩니다.
- 22. Java Timer.schedule은 한 번만 실행됩니다.
- 23. RxJava - 구독자는 한 번만 실행됩니다.
- 24. 자바 스크립트는 한 번만 실행됩니다.
- 25. setTimeout은 루프에서 한 번만 실행됩니다.
- 26. Fluent Scheduler가 한 번만 실행됩니다.
- 27. 업데이트 문은 한 번만 실행됩니다.
- 28. zsh 함수는 한 번만 실행됩니다.
- 29. 내 AJAX가 한 번만 실행됩니다.
- 30. js 검증은 한 번만 실행됩니다.
매일 특정 시간에 이메일을 보내시겠습니까? 그리고 그 일은 성공했거나 그 일의 상태를 원할 때만 그 우편물을 보내야합니까? –
매일 성공하는 경우에만 특정 시간에 이메일을 보내고 싶었습니다. – Rajesh
@Rajesh 그냥 호기심 - 어떻게 매시간 실행하도록 구성 했습니까? @hourly를 사용 했습니까? – streetlight