0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2023-06-12

目的

チームで開発する際に、他のメンバーが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

確認

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?