1
/
5

プライベートリポジトリの変化を検知しteamsに通知を送るツール

目的

チームで開発する際に、他のメンバーがdevelopにpushしたことを通知するには、無料枠だとパブリックリポジトリにしていないといけない。しかし、今回は都合上プライベートリポジトリのため、リポジトリ監視が出来ない。

そこで、pythonでプライベートリポジトリの変化を監視し、検知した結果をteamsに送信するツールを作成する

ライブラリインストール

pip3 install PyGithub
pip3 install pymsteams

コード本体

from github import Github
import time
import pymsteams


token='___YOUR_TEAMS_GITHUB_TOKEN___'

g = Github(token)


while True:
    branch = g.get_repo("____YOUR_REPOSITORY_NAME____").get_branch("develop")
    kyu = branch.commit
    print(kyu)
    time.sleep(10)
    branch = g.get_repo("____YOUR_REPOSITORY_NAME____").get_branch("develop")
    new = branch.commit
    print(new)
    if new != kyu:
        TEAMS_WEB_HOOK_URL = "___YOUR_TEAMS_WEBHOOK_TOKEN___"
        myTeamsMessage = pymsteams.connectorcard(TEAMS_WEB_HOOK_URL)
        myTeamsMessage.title("Developリポジトリ更新確認")
        myTeamsMessage.text("Developが更新されました。git pullを実行してください。")
        myTeamsMessage.send()
    else:
        pass

解説

ライブラリのインポート

from github import Github
import time
import pymsteams

githubメソッドの作成

token='___YOUR_TEAMS_GITHUB_TOKEN___'
g = Github(token)

リポジトリの状態を10秒間隔で比較

branch = g.get_repo("____YOUR_REPOSITORY_NAME____").get_branch("develop")
    kyu = branch.commit
    print(kyu)
    time.sleep(10)
    branch = g.get_repo("____YOUR_REPOSITORY_NAME____").get_branch("develop")
    new = branch.commit
    print(new)
    if new != kyu:

Teamsの送信

TEAMS_WEB_HOOK_URL = "___YOUR_TEAMS_WEBHOOK_TOKEN___"
        myTeamsMessage = pymsteams.connectorcard(TEAMS_WEB_HOOK_URL)
        myTeamsMessage.title("Developリポジトリ更新確認")
        myTeamsMessage.text("Developが更新されました。git pullを実行してください。")
        myTeamsMessage.send()

systemdで管理

serviceの作成

/etc/systemd/system/gitsv.service

[Unit]
Description=Disk monitoring shell script service
Documentation=
#After=networking.service

[Service]
Type=simple
User=root
Group=root
TimeoutStartSec=0
Restart=on-failure
RestartSec=10s
#ExecStartPre=
ExecStart=/home/shoma/github/gg.sh
SyslogIdentifier=Diskutilization

[Install]
WantedBy=multi-user.target

shの作成

/home/shoma/github/gg.sh

#!/bin/bash
cd `dirname $0`
python3 gg.py

確認

リポジトリにcommit等で変更を加える

Like shoma Iguchi's Story
Let shoma Iguchi's company know you're interested in their content