Jenkins에 등록한 모든 계정의 이메일 주소 받기
실행 환경
주제
Jenkins에 등록한 모든 사용자의 이메일 주소를 검색하는 스크립트입니다.
Jenkins 사용자에게 일제히 연락이 필요할 때 사용할 수 있습니다.
적당한 우편 목록이 없을 때에도.
get_jenkins_user_address.shapiuser="Your User Name"
token="Your access tokeen"
jenkins_url="Your jenkins url"
curl_opt="-sS -u ${apiuser}:${token}"
curl ${curl_opt} ${jenkins_url}/asynchPeople/api/json | jq -r '.users | map(select(.user.fullName != ""))[].user.absoluteUrl' | while read user_url
do
curl ${curl_opt} ${user_url}/api/json | jq -r ".property[] | select(.address != null).address" >> mails.txt
done
자체 계정 토큰은 http://${YOUR_JENKINS}/user/${YOUR_ACCOUNT}/configure
에서 볼 수 있습니다.
뭐, Admin 권한이 있으면, 누구의 토큰이라고 볼 수 버립니다만....
또한 json 파서 명령 jq
가 필요합니다.
select(.user.fullName != "")
Jenkins에 따라 불필요한 사람 (또는 서비스)의 이메일 주소가 포함될 수 있습니다.
뱀발
커맨드로 취득할 수 있으면, 송신도 Jenkins로 실시하면 자동화할 수 있네요.
EnvInject를 사용하여 캡처
개요
apiuser="Your User Name"
token="Your access tokeen"
jenkins_url="Your jenkins url"
curl_opt="-sS -u ${apiuser}:${token}"
curl ${curl_opt} ${jenkins_url}/asynchPeople/api/json | jq -r '.users | map(select(.user.fullName != ""))[].user.absoluteUrl' | while read user_url
do
curl ${curl_opt} ${user_url}/api/json | jq -r ".property[] | select(.address != null).address" >> mails.txt
done
커맨드로 취득할 수 있으면, 송신도 Jenkins로 실시하면 자동화할 수 있네요.
EnvInject를 사용하여 캡처
개요
Shellの実行
에서 위의 스크립트를 실행하고 어떠한 로컬 아래라고 해도, 계정명이나 토큰을 노출시키는 것은 저항이 있었으므로, Mask Passwords Plugin 를 사용했습니다.
쉘에서 골고루하고 parameter 파일을 만듭니다.
최근 Jenkins 씨는 색칠해주게 되었습니다. 훌륭합니다.
만든 파일을 EnvInject Plugin 로 로드합니다.
그리고는, 메일을 송신하기 위해 일부러
exit 1
그리고 실패시킵니다.메일 알림 설정입니다.
이 상태에서는 환경 변수 mails 가 어떠한 실수로 정의되지 않았을 때 E-mail: ${mails} 에 메일을 보내려고 하면 이상하게 됩니다.
내 환경에서는 도메인 이름이 마음대로 더 이상하게 되었기 때문에 mails 매개 변수는 매개 변수가 있는 빌드로 미리 정의해 두는 것이 좋습니다.
이런 느낌이 듭니다.
일단, 나 개인의 주소는 흐리게 했습니다.
Workflow Plugin의 경우
모처럼이므로 Workflow Plugin에서도 시도해 보았습니다.
api를 두드리는 것은 마도로코시하지 않고, Groovy로 Jenkins 님으로부터 메일 일람을 취득하고 있습니다.
emails = []
for (int i = 0; i < User.getAll().size(); i++) {
prop = User.getAll()[i].getProperty(hudson.tasks.Mailer.UserProperty.class)
if (prop.hasExplicitlyConfiguredAddress()){
emails.push(prop.getExplicitlyConfiguredAddress())
}
}
/* Ideal
emails = User.getAll().collect {
prop = it.getProperty(hudson.tasks.Mailer.UserProperty.class)
prop.getExplicitlyConfiguredAddress()
} - null
*/
emails = emails.join(', ')
mail bcc: '', body: 'This is test mail', cc: '', charset: '', from: '', subject: 'This is test mail', to: emails
workflow plugin 때만,
collect
가 예상외의 움직임을 했으므로, 어쩌면 for文
를 사용하고 있습니다.# 루프가 1 요소 밖에 돌지 않는다
# 자세한 내용이 있으면 알려주세요 ...
뱀발 2
솔직하게 메일링리스트 만드는 편이 훨씬 편리합니다.
Reference
이 문제에 관하여(Jenkins에 등록한 모든 계정의 이메일 주소 받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yasuhiroki/items/0d3e325dce2fe57709c6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Jenkins에 등록한 모든 계정의 이메일 주소 받기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yasuhiroki/items/0d3e325dce2fe57709c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)