python 은 jenkins 를 사용 하여 기업 의 위 챗 알림 을 보 내 는 실현
머리말
최근 에 Jenkins 를 사용 하여 자동화 배 치 를 했 지만 배치 후 해당 하 는 통지 가 없 었 다.메 일 로 통 지 를 보 냈 지만 메 일이 수신 자의 수신 설정 에 제한 을 받 아 관련 발표 내용 을 제때에 보지 못 하 는 것 을 발견 했다.회사 가 기업 위 챗 을 사용 하기 때문에 젠 킨 스 가 기업 위 챗 로봇 에 알 리 는 실현 방식 을 고려 했다.
2.기업 의 위 챗 푸 시 를 사용 하 는 장점
프로젝트 참여 자 프로젝트 정보의 업데이트 상황 을 실시 간 으로 알려 줍 니 다.
보기 편 하 다
배치
3.1 기업 위 챗 의 배치
3.1.1 기업 위 챗 그룹 에 가입
그룹 진입->그룹 라벨 우 클릭,그룹 로봇 추가
주의:기업 위 챗 은 못 처럼 로봇 배치 권한 을 설정 하지 않 은 것 같 아서 누구나 로봇 을 추가 할 수 있 습 니 다.못 에 비해 좀 뒤떨어지다.
3.1.2 로봇 정보 작성
기업 위 챗 의 로봇 은 못 박 는 로봇 에 비해 너무 간단 하 다.
3.1.3 훅 주소 복사
메모:이 곳 의 Webhook 은 Jenkins 의 인자 설정 에 사 용 됩 니 다.
3.2 Jenkins 의 설정
3.2.1 플러그 인 설치
Qy Wechat Notification
플러그 인 설치 후 첫 페이지 로 돌아 가기
3.2.2 Webhook 설정
->선택
Webhook 설정
3.3 테스트
실현 효 과 는 다음 과 같다.
다음은 배치 가능 한 기업 위 챗 알림 입 니 다.
1.기업 위 챗 그룹 을 만 들 고 그룹 로봇 을 추가 하여 로봇 의 webhook 주 소 를 얻는다.
2.jenkins 에서 프로젝트 를 만 듭 니 다.설정 은 다음 과 같 습 니 다.
general 아래 This project is parameterized,string parameter 2 개 추가
기업 위 챗 로봇 의 웹 훅 과 프로젝트 이상 시 알려 야 할 책임자
사용자 기본 값 은 해당 기업 의 위 챗 그룹 에 있 는 사용자 이름 을 입력 해 야 알림 을 보 낼 때@대응 하 는 사람 이 될 수 있 고 여러 사용자 이름 간 에 영문 쉼표 로 구분 할 수 있 습 니 다.
빌 드 실행 명령 작성
빌 드 명령 설명 은 다음 과 같 습 니 다.
# pybot.bat
# log.txt , >log.txt
# || ||
# && &&
# python , , webhook ,jenkins , @ python ../wechatNotice.py %url% %JOB_NAME% %principal%
pybot.bat /***.robot >log.txt || python ../wechatNotice.py %url% %JOB_NAME% %principal%
이상 설정 하면 이 항목 을 저장 할 수 있 습 니 다.3.이번 에는 robot 프레임 워 크 를 사용 합 니 다.테스트 사례 가 실 행 된 후 콘 솔 에서 출력 한 로 그 를 log.txt 파일 로 내 보 냅 니 다.
내 보 낸 로그 에 따라 실행 에 실패 한 테스트 용례 제목 가 져 오기
#GetCaseTitle.py
# ,
class GetCaseTitle:
def __init__(self):
self.file = "log.txt" # jenkins , log.txt
def get_fail_case_title(self):
fail_case_line = []
file = open(self.file, 'r', encoding='gbk')
for line in file: #
if "FAIL" in line:
line = str(line).replace(" ", "")
fail_case_line.append(line)
file.close()
if len(fail_case_line)>0: # 0
fail_case_line = fail_case_line[:-1] # 1
fail_case_title = []
for title in fail_case_line: # case
title = title.split('|')[0]
if title not in fail_case_line[-1]: # , |
fail_case_title.append(title + ' | ')
else:
fail_case_title.append(title)
fail_case_title = ''.join(fail_case_title)
return fail_case_title
else:
return 0
if __name__ == "__main__":
GetCaseTitle().get_fail_case_title()
실행 에 실패 한 테스트 사례 가 있 으 면 기업 위 챗 알림 을 보 냅 니 다.
#wechatNotice.py
#
import requests
import json
import urllib3
# import time
import sys
from GetCaseTitle import GetCaseTitle
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
class InformRobot:
def __init__(self,url): #webhook
self.url = url
self.sess = requests.session()
def markdown_robot(self, report_url, principal, failcase):
data = {
"msgtype": "markdown", # , markdown
"markdown": {
"content": " ! UI
" +
f" :[{report_url}]({report_url})
" +
f" :@{principal}
"
f" :{failcase}"
}
}
re_post = self.sess.post(self.url, data=json.dumps(data), verify=False)
print(re_post.content, data)
if __name__ == "__main__":
failcase = GetCaseTitle().get_fail_case_title() # GetCaseTitle.py
if failcase: #
url=sys.argv[1]
projectname = sys.argv[2]
principal = sys.argv[3]
# execute_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
report_url = "http://172.18.1.1:8080/job/" + projectname + "/ws/log.html"
InformRobot(url).markdown_robot(report_url, principal, failcase)
else:
print(" ")
알림 을 보 내 는 효 과 는 다음 과 같 습 니 다.python 이 jenkins 를 사용 하여 기업 위 챗 알림 을 보 내 는 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 이 기업 위 챗 알림 내용 을 보 내 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.