BLOG ブログ
エークラウドメンバーによるローテーションブログ
2024.08.02
FTPアップロード作業を自動化した話
現在のWEBアプリ系業界はCI/CDの考え方を取り入れてCircleCIやJenkins CI、GitHub Actions何かを取り入れ始めていますが、弊社ではまだこれ自体をあまり知らない人が多いです(僕も含めて)。
でもずっと同じ作業を繰り返していると、めんどくさがりであれば自然にそういう考え方に近寄ってくるとは思います。
そういうわけで、システム課でも試しにCIツールを導入しようと試みましたが、思っていたよりもハードルが高く(SREのお力が必要)、すぐに導入できなかったのでせめて単純作業だけでも自動化しようと作ったのが今回のFTPアップロード自動化ツールです。
以下がその全容です。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
------------------------------
セットアップ用
------------------------------
gitでのサイト更新を自動化
python /home/DIR/setup.py DIR
'''
'''
------------------------------
初期設定
------------------------------
'''
import sys
import os
import crypt
args = sys.argv
#ディレクトリ
DIR = None
#結果
RESULT = True
try:
"""ディレクトリ取得"""
DIR = args[1]
print("ディレクトリ取得: " + str(args[1]))
except:
print("ディレクトリ取得に失敗しました")
sys.exit()
'''
------------------------------
処理
------------------------------
'''
#gitクローン
#################
try:
print("gitクローン...")
rt = os.system("git clone git@〇〇.git /home/"+DIR+"/git_files")
print("git clone git@〇〇.git /home/"+DIR+"/git_files")
except:
RESULT = False
print(rt)
print("gitクローンに失敗しました")
#ディレクトリ削除
#################
dirArr = ["file1",'file2','file3']
for i, val in enumerate(dirArr):
try:
print(val+"削除...")
rt = os.system("rm -rf /home/"+DIR+"/"+val)
print("rm -rf /home/"+DIR+"/"+val)
except:
RESULT = False
print(rt)
print(val+"削除に失敗しました")
#gitフォルダ移動
#################
try:
print("gitフォルダ移動...")
rt = os.system("cp -r /home/"+DIR+"/git_files/* /home/"+DIR+"/")
print("cp -r /home/"+DIR+"/git_files/* /home/"+DIR+"/")
except:
RESULT = False
print(rt)
print("gitフォルダ移動に失敗しました")
#gitフォルダ削除
#################
try:
print("gitフォルダ削除...")
rt = os.system("rm -rf /home/"+DIR+"/git_files")
print("rm -rf /home/"+DIR+"/git_files")
except:
RESULT = False
print(rt)
print("gitフォルダ削除に失敗しました")
#権限変更
#################
try:
print("権限変更...")
rt = os.system("chown -R "+DIR+". /home/"+DIR+"/")
print("chown -R "+DIR+". /home/"+DIR+"/")
except:
RESULT = False
print(rt)
print("権限変更に失敗しました")
やることはただただ前のフォルダを削除してgitにある最新フォルダをアップロードし直すだけのテストも何も無いおもちゃみたいなツールですが、これが使ってみると想像以上に楽で、開発環境下で個人のテストサイトにアップロードする際は大変お世話になっています。
ちなみにDB側の更新は初期化されると色々困るのであえて設定してないですが、この方法であればそっちの自動化もちゃんとできます。
そして弊社で提供しているサイトのセットアップはこれを応用してほぼ自動化しているのですが、やっぱり素人が作ったコードなのでまだまだバグが多いのが現状です。 多分素直に夜に出回っているCIツールを使うのが無難なんでしょうね。
WEB制作記事
お客様の思い描くビジョンを明確な形に変えていく為に
全力でサポートさせて頂きます。
お問い合わせ・ご相談はこちらまでお気軽にご連絡ください。
- お電話でのお問い合わせ :03-5784-3113
- 受付時間 10:30-18:30(土日祝除く)