2
2

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 3 years have passed since last update.

SlackbotでGit管理のソースコードを更新する〜PythonでのBot開発〜

Last updated at Posted at 2019-09-13

本記事はSlackbotでGit管理のソースコマンドを更新する方法を説明するものです。

サーバーで稼働中のソースコードをアップデートする場合、「サーバーにログインしてgit pullコマンド」を実行という面倒な操作が必要となります。
が、SlackbotにGit更新の命令を記述しておくことでSlackbotに指示を出すだけでサイトのデータの更新が可能となります。

SlackbotでGit更新をすることで、ソースコード更新の手間を大幅に削減できることができます。

SlackbotでGit管理のソースコードを管理する方法

システムがあるサーバーとにSlackbotのプログラムを予めアップロードしておく必要があります。

Slackbotをアップロードする手順については「Slackbotをレンタルサーバーで動かす」をお読みだくさい。

SlackbotでGit管理のソースコードを更新する方法

作業は ・シェルスクリプトの作成 ・Slackbotの応答処理の作成

の2つです。

シェルスクリプトの作成

更新処理は対象のディレクトリに移動して「git pull」を実行すればOKですが、Pythonに直接書き込んでしまうと複数のサーバーを管理している場合にサーバーごとの判定を用意する必要があり不便です。

サーバーによって更新操作が異なる場合があると思うので更新部分はシェルスクリプトにまとめた方が良いでしょう。

◆サイトアップデートのスクリプト例(git_pull.sh)


#!/bin/sh
# ターゲットディレクトリに移動
cd /home/user/xxxxxxx/
# 更新をpullする
git pull

◆複数のサーバーでSlackbotによる更新を使用したい場合
git_pull.shをサーバーごとに用意します。
git_pull.shはSlackbotプロジェクトの直下には置きますが、git管理から外します。
.gitignoreに「git_pull.sh」を追加しておきましょう。

Slackbotの応答処理の作成

シェルスクリプトを呼び出して結果を受け取ります。 OSの操作を行うライブラリには「os」と「subprocess」などがあります。

「os」は結果を受け取ることができないので「subprocess」を使用しましょう。

「check_output()」メソッドを使用すると「git pull」の出力内容を取得できます。


from slackbot.bot import respond_to
import subprocess

@respond_to('^サイトアップデート$')
def update_site(message):
    message.send('サイトをアップデートします')
    # スクリプトを実行して出力内容を取得
    out = subprocess.check_output("./git_pull.sh")
    message.send('アップデートしました')
    message.send(out)

◆実行結果
Slackbotでgit更新

以上、SlackbotでGit管理のソースコードを更新する方法でした。

Slackbot+PythonまとめTOP>>Slackbotの作り方マニュアル〜Python編〜

◆関連記事

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?