1

私たちに合うワークフローをあちこち探していますが、まだ完全なワークフローを見つけることができません。2 人の開発者からなる単純なチームである私たちを助けていただければ幸いです。

私が理解している限り、最良のワークフローは、git を使用してすべての変更を共通の開発サーバーにプッシュおよびプルしてから、これらの変更をデプロイ サーバーにアップロードすることです。

これには多くのガイドがあり、すべての変更が私たち開発者によって行われた場合、簡単に解決できます。私たちの問題は、よくあることだと思いましたが、展開サーバーでも多くの変更が行われていることです。一般的なのは、エンド ユーザーが CMS に新しい画像をアップロードするときです。一部のエンドユーザーは、CMS インターフェイスを介して CSS ファイルを編集しています。開発サーバーと展開サーバーを同期するにはどうすればよいですか? ギット?同期?組み合わせ?

/マーティン

4

3 に答える 3

1

概念的には、コードの変更をコンテンツの変更 (特にユーザーが生成したコンテンツ) から分離する必要があります。Git はサイト全体のバックアップを作成するのには適していないため、急速に変化するユーザー コンテンツのインデックスを作成すると、非効率的で、最も重要なことに、移植性のない過度にサイズの大きいリポジトリが作成されるだけです。

Git を使用してファイルへの変更を追跡し、ユーザーがコンテンツを編集/投稿/維持できるようにします。その上でのワークフローには集中型サーバー (gitolite を使用) を使用します。@iltempo が述べたように、ユーザーが生成したコンテンツを分離し、.gitignore.

Git リポジトリでは、git フックを使用してスクリプトを実行できます。多くの人がこれらを自動展開に使用していますがrsync、サーバーを自動的にバックアップおよび同期するために簡単に使用できます。rsync は、新しいコンテンツのみを追加してトランザクション時間を短縮するオプションがあるため、これに最適です。したがって、概念的には、git がコードを処理し、rsync がその他すべてを処理し、git フックがそれを実現します。

これを CMS で使用しており、命の恩人です。

于 2012-11-11T19:45:30.960 に答える
1

ユーザー関連の変更を git で追跡しないのが一般的な方法であるため、本番サーバー側からリポジトリを更新する必要はありません。

ユーザー イメージは、別のディレクトリ、中央アセット サーバー、または Amazon S3 などに配置する必要があります。CMS 関連の変更をデータベースに保存することもお勧めします。

于 2012-11-11T19:38:11.237 に答える
0

大まかに言えば、ソース ツリーや展開プロセスからいくつかのフォルダー/ファイルを除外する必要があります。Rsyncはそれで問題ありません。

継続的インテグレーションを検討していますか?

ワークフローを自動化するには、Jenkinsを使用することをお勧めします。

Jenkins を使用すると、ビルドを自動化し、可能であればテストを自動化し、コミットが Git リポジトリ、ステージング サーバー、または本番環境にプッシュされるたびにアプリをデプロイすることもできます。

Jenkins は Java プロジェクトに限定されません。Jenkins を使用して任意のプロジェクトを構築できます。

于 2012-11-11T20:41:31.850 に答える