web-dev-qa-db-ja.com

同じプロジェクトの複数の部分が同じサーバーで実行されている場合、単一のリポジトリを使用する必要がありますか?

次の部分で構成されるプロジェクトを計画しています。

  1. LumenのREST API
  2. LaravelのWebクライアント
  3. Jekyllの製品Webサイト

これらの個別の製品は、同じサーバーで実行されます。

私は本番環境をできる限り真似た開発環境が欲しいので、 両方の環境をプロビジョニング である単一のAnsibleプレイブックと組み合わせてVagrantを使用します。

そのようなプロジェクトを組織する最良の方法は何ですか?すべてを1つのリポジトリに保持する必要がありますか、それとも複数のリポジトリにパーツを分割する必要がありますか?

開発環境とプロビジョニングスクリプトはどうですか?これらを別のリポジトリに配置する必要がありますか?開発環境でプロジェクトの個別の部分を参照するにはどうすればよいですか?

単一のリポジトリのクローンを作成し、できる限り少ない作業で開発環境を立ち上げたいと思います。

何かお勧めですか?

編集:私の質問は この質問 とは異なります。なぜなら、私は本番環境と開発環境に関連することに特に苦労しているからです。

3
Willem-Aart

いくらかいじり回した後、私はかなりうまくいくように見える解決策を思いつきました。

サブプロジェクトは別々のリポジトリに保存します。

  • プロジェクト名-インフラストラクチャ
  • projectname-api
  • プロジェクト名-クライアント
  • projectname-website

project-infrastructure- repositoryには、Vagrantfile、いくつかのプロビジョニングファイル、および開発環境をセットアップするためにローカルで実行されるAnsibleプレイブックが含まれています。

--- - hosts: 127.0.0.1 connection: local tasks: - git: repo=https://[email protected]/projectname-api.git dest=www/api/ - git: repo=https://[email protected]/projectname-client.git dest=www/client/ - git: git: repo=https://[email protected]/projectname-website.git dest=www/website/

上記のプレイブックを実行すると、Vagrantのnginxがファイルを提供するために使用するwww- folderに個別のリポジトリが複製されます。

もちろん、wwwフォルダーは.gitignoreprojectname-infrastructureの中にあります。

私がする必要があるのは、git clone https://[email protected]/projectname-infrastucture.gitの後にansible-playbook setup.yml -i 127.0.0.1,を続けることだけです。次に、vagrant upを実行するだけで、すべてが稼働します。

このアプローチの欠点はありますか?

3
Willem-Aart

一部が異なるサーバーで実行されている場合でも、同じリポジトリを使用することをお勧めします。また、セットアップスクリプト(例:ansibleプレイブック)を別のリポジトリに分割しないでください。これは、同じプロジェクトであるためです。

これは便宜上の問題です。開発者、テスター、またはサポートエンジニアとして開始するために必要なチェックアウトは1つだけです。そして、システムの不要な部分をサーバーにプロビジョニングすることについては気にしません。なぜなら、ansibleがそれを処理できるからです。

1
name_no