web-dev-qa-db-ja.com

小規模チームのワークフローを改善するための提案(CI /展開)

チームのワークフローとアーキテクチャを改善したいと思います。

現在、チームのすべてのメンバーがサブディレクトリを持つLAMP開発サーバーがあります。 LAN経由でこのディレクトリで直接作業します。 FTP経由で本番サーバーにアップロードする準備ができたときのための「リリース」ディレクトリもあります。

一元化されたリポジトリとして機能するgithubプライベートリポジトリを使用します。

プログラマーの現在の日常のワークフローの例:

簡単な毎日の会議の後に作業するユーザーストーリーを選択するユーザーストーリーにちなんで名付けられたgitブランチを開く作業、いくつかの変更をコミットするgithubにプッシュするデプロイすることにしたとき、変更をプルし、コードレビューを実行し、必要な変数を変更しますFTP経由での制作とアップロード。開発データベースに変更が加えられた場合は、本番サーバーのデータベースにも複製します。

この状況を改善し始めるべきアイデアはありますか?現在の問題:

  • チームのメンバーは、開発サーバーで直接編集する必要があるため、自宅で簡単に作業することはできません(ラグの問題)
  • 展開プロセスはひどいです(変数を手動で変更し、本番環境にFTPで転送します)

編集:私はより良い質問を追加しようとします。

  • 共通の開発サーバー上に各開発者のサブディレクトリを設定する:良い考えかどうか?考えられる代替案:各開発者は(WAMPなどを使用して)独自の開発環境をセットアップし、テストサーバーにプッシュします。
  • デプロイメントの側面では、構成変数を手動で変更し、本番環境にFTPで転送するのは悪い考えだと思います。考えられる代替案:本番サーバーでgitをセットアップし、.gitignoreで構成ファイルを設定し(本番サーバーで直接手動で維持します)、gitで変更をプッシュします。
  • リモート開発者の場合、開発環境(ここでも、WAMPなど)を複製する必要がありますが、開発サーバーのデータベースで作業する必要がありますか?データベースをローカルマシンにコピーするよりはましだと思います。
5
Lukmo

各開発者に独自の環境を提供します。共有ボックスにあるかローカルインストールにあるかは関係ありません(ローカルインストールには多くの利点があります)

次に、サーバーをビルドして、テスト(または統合)環境に自動的にデプロイします。コミットが開発ブランチにプッシュされると、コミットはこの中央テスト環境にデプロイされるため、できれば自動化ツールを使用してテストを行うことができます。

次に、リリースブランチのテスト環境と同様のセットアップを取得します。コードがマージされると、コードもデプロイされますが、より代表的なシステムにデプロイされます。通常、テスト環境とプリプロダクション環境は同じように開始されますが、テスト環境ではより多くの粗雑さが構築され、リリースブランチにマージされたコードのみが終了するため、プリプロダクションははるかにクリーンになるはずです。 '実験的な'コードやロールバックはありません。

構成-これは標準のSCMの問題です。各環境(本番環境も含む)の構成用に個別の領域を保持し、そこにすべてのバージョンを保存してから、展開が行われている場合に適切なものを選択します。明らかに、正しく機能するようにこれらすべてをスクリプト化する必要があり、PiTAにすることもできますが、デプロイに必要な手順はすでにあるようですので、スクリプトを作成するだけです。 githookで直接コーディングしたくない場合は、これを支援するCIサーバーとしてJenkinsをお勧めします。

3
gbjbaanb