14

私の会社では、ビジネス Web サイト (すべて PHP で記述されていますが、それは問題ではありません) の Web 開発者のグループが 8 人います。グループの全員が同時にさまざまなプロジェクトに取り組んでおり、タスクが完了するとすぐに展開します (最近ビジネスが急速に進んでいるため)。

現在、開発は 1 つの共有サーバー上で行われ、すべての開発者が同じコード ベースで作業しています (RCS を使用してファイルを他のユーザーから「ロック」しています)。展開の期限が来ると、変更されたファイルが「ステージング」サーバーにコピーされ、同期スクリプトがファイルをメインの Web サーバーにアップロードし、そこから他の 9 つのサーバーに配布します。

幸いなことに、Web 開発チームはプロセスを改善するために私たちに助けを求めてきました (私たちがしばらく文句を言った後)。

  • 誰もが独自のコードベースを持つことができるように、仮想ディレクトリを備えた開発サーバー
  • 変更を追跡するための SVN (またはその他の VCS)
  • 最新のチェックイン コードを保持するテスト用の中央サーバー

問題は、他のプロジェクトからバグを誤ってアップロードすることなく、変更されたファイルをサーバーにデプロイするにはどうすればよいかということです。私の最初のアイデアは、リポジトリから最新のリビジョンを単純にエクスポートすることでしたが、それではファイルを完全に制御することはできませんでした。

このような状況をどのように管理していますか?どのような種類の展開スクリプトが実行されていますか?

(特別な課題として: Web サイトは過去 10 年間で有機的に成長したため、プロジェクトは小さなチャンクに分割されていませんが、特定の機能のファイルがディレクトリ ツリー全体に分散しています。)

4

7 に答える 7

10

Cassy - ソース コード管理が完全に整うまでには、まだ長い道のりがありますが、順調に進んでいるようです。

個々のサンドボックスを持つことは、間違いなく役に立ちます。次に、Web サイトが常に特定のリビジョン、タグ、または subversion からのブランチのクリーンなチェックアウトであることを確認します。

私たちは git を使用していますが、似たようなセットアップをしています。特定のバージョンにバージョン番号のタグを付けます (git では、タグに説明を追加することもできます。リリース ノートに適しています)。次に、「リリースを行う」権限を持つ人なら誰でも実行できるスクリプトを作成します。パラメータ -- 更新するシステム (データセンター、およびテストまたは運用サーバーを更新する場合) と、バージョン番号 (タグ)。

スクリプトは sudo を使用して、共有アカウントでリリース スクリプトを実行します。関連するバージョンのチェックアウトを行い、javascript と CSS 1を最小化し、コードを環境に関連するサーバーにプッシュしてから、再起動が必要なものを再起動します。リリース スクリプトの最後の行は、Web サーバーの 1 つに接続し、エラー ログを追跡します。

私たちの ウェブサイトでは、各ページの下部に、現在のサーバー名とバージョンを含む HTML コメントを含めています。

1およびそのような他のハウスキーピング タスクの束...

于 2009-02-05T10:35:09.453 に答える
2

共有コードベースに大きな変更を加える場合は、(同じコードベースの) 個々のプロジェクトに対して分岐とマージを使用することを検討する必要があります。

通常、コミットされていないコードをテストするためのテスト用のローカル開発環境(つまり、ローカルのWebサーバー)があります(機能していないコードをまったくコミットしたくない場合)が、その開発環境は、共有フォルダーを使用して別のサーバー上にある場合もあります。

ただし、コミットされたコードは、本番環境に配置する前に、テストのためにステージング サーバーにデプロイする必要があります。

于 2009-02-05T10:37:00.493 に答える
1

PHP での使用方法を説明する記事がいくつかありますが、Ruby 向けではありますが、おそらく Capistrano を使用できます。

Phing は CVS では使用できますが、SVN では使用できないと思います (少なくとも私が最後に読んだもの)。

Capistrano を模倣したものですが、PHP で書かれたプロジェクトもあります。

それ以外の場合は、カスタムメイドのソリューションもあります:

  1. 展開するタグ ファイル。

  2. 特定のディレクトリでタグを使用してファイルをチェックアウトする
  3. ディレクトリを現在のドキュメントルートにシンボリックリンクします(以前のバージョンに簡単にロールバックできます)
于 2009-02-05T10:35:58.687 に答える
0

あなたは見る必要があります:

  • 継続的インテグレーション
  • コードのチェックイン時に単体テストを実行して、バグがないことを確認する
  • バグが含まれている場合、コードを拒否する可能性があります
  • ナイトリー ビルドがある
  • バグのない最後のビルドのみをリリースする

特に最初は完璧な解決策にたどり着けないかもしれませんが、選択した解決策を使用すればするほど、誰もが快適になり、改善について提案できるようになります。

于 2009-02-05T10:21:24.113 に答える
0

毎晩、 antで安定性をチェックします。Ant スクリプトを使用してデプロイします。構成と使用は非常に簡単です。

于 2009-02-05T10:23:29.303 に答える
0

昨日、別の質問に同様の回答をしました。基本的に、ブランチで作業し、ライブに移行する前に統合できます。

理解しなければならない最大のことは、個々のファイルではなく、ファイルへの変更を扱っているということです。ブランチを作成すると、実際には現在のバージョンではなく、さまざまな変更が加えられたバージョンだけがあります。

于 2009-02-05T11:14:22.820 に答える