目的
チームで開発する際に、他のメンバーが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
/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
/home/shoma/github/gg.sh
#!/bin/bash
cd `dirname $0`
python3 gg.py