製品開発高速化のため、10個以上のディレクトリのソースを一括アップデートするコマンド


管理画面AdventCalender第二弾は、シスウ株式会社の星野がお送りします。

今回書かせて頂くのは、製品リリース後のテストを高速で回す為にWordpress2.3-4.0のソースを一括で更新するTipsを紹介します。

利用しているサービス

Javascriptで画像の縦横比をいい感じに計算して、並べる関連記事プラグインでブログによってはPVが1.5倍になったサイトもあるそうです。

WordPress / はてな / Livedoorに対応しており、リリースして1ヶ月で著名ブロガーも含め、100ブログ近くに導入されています。

商品の詳細はこちら。(宣伝)

紹介するコードについて

今回紹介するのは、Wordpressを2.3-4.0のあるディレクトリのソースを15個以上一括更新するための自動化のシェルです。

プラグインがバージョンアップされる度に実行しなければならないため、数秒で終わらせるとテストが高速回転できるようになりました。

まずは、普通のシェルはこちら。

[code]

#!/bin/sh

path=$(pwd)

echo $path

ARRAY=(2.3.1 2.5.1 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0)

for item in ${ARRAY[@]}; do

 p="./${item}/wordpress/wp-content/plugins/related-posts-line-up-exactry-by-milliard/"

 if [ ! -e ${p} ]; then

  sudo mkdir ${p}

  echo "${p}が存在しません"

 else

  echo "${p}が存在"

 fi

 cd ${p}

 echo $(pwd)
 sudo chown -R (ユーザ名) $(pwd)
 a=`git remote -v`

 if [ "${a}" = "" ] ; then

  echo "レポジトリ"
  git clone ssh://(/etc/ssh_config内のホスト)/(パス)/ $(pwd)

 else
   
  cd $(pwd)
  git pull origin master

 fi

 echo $(pwd)
 cd $path

done

[/code]

問題点

このコマンドの問題点は、毎回証明書のパスワードを聞かれるので、正直10回以上打ち込むのが面倒でプログラマーのやる気をそぎます。といっても、僕1人ですが。

解決策

expectコマンドで、パスワードを直に打ち込んで自動化します。

[code]
#!/usr/local/bin/expect -f
set timeout 200
spawn sudo sh ./updateAll.sh
expect "(証明書ファイル名)\':"
send "(パスワード)\r"
・・・・(expectからsendコードを回数分コピペ。ループする方法もあるみたいですが、時間切れ・・・。)
interact

[/code]

HadoopなどでPostfixをソースからインストールする際などにも使えるコマンドなので、覚えると自動化が非常にラクで助かってます。

ただ、パスワードをべた書きするので、不特定多数が使うパソコンやサーバには置かないように気をつけています。

今後について

もっとセキュリティを上げたいのですが、何かいい案があれば教えて頂ければ幸いです。

くどいようですが、僕の関連ページプラグイン、宜しくお願い致します。

SNSでもご購読できます。

コメントを残す

*