python 은 jenkins 를 사용 하여 기업 의 위 챗 알림 을 보 내 는 실현

만약 에 제 인 킨 스 의 구축 결 과 를 기업 위 챗 에 보 내 고 알림 을 하려 면 가장 간편 한 방법 은 설치Qy Wechat Notification Plugin플러그 인 입 니 다.인터넷 튜 토리 얼 이 많 으 면 중복 적 으로 쓰 지 않 습 니 다.참고 하 시기 바 랍 니 다.
머리말
최근 에 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 설정
  • 젠 킨 스 잡 진입
  • Job 설정 에 들 어가 기
  • 바로 가기 ->선택

  • 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 이 기업 위 챗 알림 내용 을 보 내 는 것 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기