pythonはjenkinsを使って企業微信通知の実現を送ります。
7150 ワード
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プラグインのインストールはシステム管理 に入る。は管理プラグイン に入ります。検索プラグイン(
プラグインをインストールして最初のページに戻ります。
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グループのユーザー名を記入してください。通知を出す時に、対応する人に@を送ることができます。複数のユーザー名の間には英字で区切られています。
ビルディング実行命令を記入
ビルドコマンドの説明は以下の通りです。
3.今回使ったのはrobotフレームで、テストケースの運転が完了したら、コンソールから出力されたログは以下のようにロゴ.txtファイルにエクスポートされます。
エクスポートしたログから運転に失敗したテスト用の例のタイトルを取得します。
ここでは、pythonがjeckinsを使って企業のWeChat通知の実現に関する記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。
はじめに
最近は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の設定
に行く。選択
。Webhookを設定します
3.3テスト
実現した効果は以下の通りです。
以下は配置可能な企業微信通知を実施する。
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通知の実現に関する記事を紹介します。これまでの記事を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。