共有ホスティングとSVNの統合

このスクリプトは、真面目な開発チーム向けのものではありません。 より良いpythonを学ぶために作成しました。 それにもかかわらず、私は6か月以上にわたって正常に使用しています。



この記事は、SVNでプロジェクトをリードし、リモートサーバーを持ち、ftpとsshを介してアクセスする開発者向けですが、何もインストールすることはできません。



展開パターン





私の展開スキームは非常に単純です-リモートサーバー上のファイルを更新するだけです。 これは、まさにスクリプトを使用して実装されるものです。



開発者はコードをリポジトリに固定します。 その後、Pythonスクリプトが(自動または手動で)起動され、更新されたファイルがサーバーにアップロードされ、古いファイルが削除されます。 BuildServer CruiseControl(java)を使用しているため、スクリプトが自動的に開始されます。これは、リポジトリを監視し、リポジトリに新しいバージョンのコードが表示されたときにいくつかのイベントを実行できるようにします。

環境要件

  1. LAN上のサーバー

    • SVNリポジトリ、svn.exeがPATHに追加されました
    • python 2.5をインストールすると、python.exeがPATHに追加されます
    • sshへのアクセス。 cygwinの簡易バージョンがありますが、実際にはftp + sshしかありません。


  2. リモートサーバー

    • ssh、ftpが発生しました
    • サードパーティのソフトウェアをインストールする方法はありません


  3. サーバーフォルダーC:\ Program Files \ CruiseControl \ projects \ project1には、運用サーバー上のコードと同期したコードの作業コピーが保存されます。 つまり、実際には、運用サーバーとこのフォルダーのコードは一致します。
  4. スクリプトはパスCにあります:\ svn \ apply_svn_changes \ publish_web_site.py
  5. スクリプトを実行するユーザーは、ftpおよびsshを介してインターネットにアクセスする権利と、このサーバーでファイルを実行する権利を持っています。
  6. 実動サーバー上のサイトは、ftpホームフォルダーに関連するweb / projectフォルダーにあります。


スクリプトは次のようにコンソールから起動されます。

> python C:\svn\apply_svn_changes\publish_web_site.py -c "C:\Program Files\CruiseControl\projects\project1\source" --host ftp_user@production.com -p ftp_password -d sites/ms







スクリプトは、フォルダー「C:\ Program Files \ CruiseControl \ projects \ project1 \ source」を調べて、現在のバージョンのコード、リポジトリ内のコードのバージョンを見つけます。 彼はそれらを比較し、どのファイルとフォルダーを削除し、どのファイルとフォルダーを再度ダウンロードまたは作成する必要があるかを見つけます。 これはsvn diff



を使用して行われます。 その後、彼はタスクの計画を作成し、その計画を一時フォルダーに保存します。

スクリプトは計画を開き、指定されたサーバーにFTP経由で接続し、実行する計画を開始します。

その後、消灯します。 すべての変更はログに書き込まれます。



pastebinのメインコード、 depositfilesのスクリプト全体



--helpスイッチを使用してスクリプトを実行してみてください

python "C:\svn\apply_svn_changes\publish_web_site.py" --help





1. sshは、 rm -rf ./[...]



を使用してサーバーからフォルダーを削除するためにのみ必要rm -rf ./[...]



(これは、システムの全体的な滑らかさに関するハッキングです。



All Articles