Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

本記事は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編〜

◆関連記事

miyabikno
SIer系業務7年、Web系業務を3年やってきたプログラミング系ブロガーです。 Pythonの記事をメインで書いています。
https://se.miyabikno-jobs.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away