pythonはjenkinsを使って企業微信通知の実現を送ります。


junnkinsの構築結果を企業に送信して通知するだけであれば、最も簡便な方法はQy Wechat Notification Pluginプラグインをインストールすることであり、オンラインチュートリアルは重複して書かないことが多いので、参考にしてください。
はじめに
最近はJenkinsを使って自動化されていますが、配備後は、そのような通知はなく、メールで通知を送信していますが、メールは受信側の設定に制限されており、配信内容をすぐに見ることができなくなりました。会社は企業向けのWeChatを使っていますので、Jenkinsが企業向けのWeChatロボットの実現方法を通知することを考えています。
二、企業のWeChatを使って送るメリット
プロジェクト参加者のプロジェクト情報の更新状況をリアルタイムでお知らせします。
閲覧に便利である
三、配置
3.1企業WeChatの配置
3.1.1企業WeChatグループに入る
グループに入ります。グループラベルを右クリックして、グループロボットを追加します。
注意:企業のWeChatには、釘付けのようにグループロボットを配置する権限がないようですので、誰でもロボットを追加できます。ピンに対してちょっと遅れています。
3.1.2ロボット情報を記入する


企業の微信のロボットは釘付けロボットに比べて簡単です。
3.1.3 Hookアドレスをコピーする

ここのWebhookはJenkinsのパラメータ構成に使用されます。
3.2 Jenkinsの配置
3.2.1プラグインのインストール
  • はシステム管理
  • に入る。
  • は管理プラグイン
  • に入ります。
  • 検索プラグイン(Qy Wechat Notification

  • プラグインをインストールして最初のページに戻ります。
    3.2.2 Webhookの設定
  • Jenkins Job
  • に入ります。
  • は、Job構成
  • に入る。
  • は、 に行く。選択

  • Webhookを設定します

    3.3テスト
  • 選択
  • 構築
  • 企業WeChat受信メッセージ-プッシュ結果

  • 実現した効果は以下の通りです。

    以下は配置可能な企業微信通知を実施する。
    1.企業のWeChatグループを構築し、グループロボットを追加して、ロボットのwebhookアドレスを取得する
    2.jenkinsでプロジェクトを作成し、構成は以下の通りです。
    generalの下でThis project is parameterized、二つのstring parameterを追加します。

    企業用微信ロボットのwebhookとプロジェクト異常時に通知する責任者です。

    ユーザーのデフォルトの値は、企業のWeChatグループのユーザー名を記入してください。通知を出す時に、対応する人に@を送ることができます。複数のユーザー名の間には英字で区切られています。

    ビルディング実行命令を記入

    ビルドコマンドの説明は以下の通りです。
    
    #       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フレームで、テストケースの運転が完了したら、コンソールから出力されたログは以下のようにロゴ.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がjeckinsを使って企業のWeChat通知の実現に関する記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。