チームでディスコースを開発する方法

こんにちは、皆さん。Discourse の開発中に問題に遭遇しました。

通常、私は Git からファイルをクローンし、変更を加え、Git でコミットします。

私のチームメイトは git pull を実行して、私のすべての変更を取得します。

Discourse でも同様の仕組みを実装するにはどうすればよいでしょうか?
変更を加えて、他の人が自宅でインストールできるようにするにはどうすればよいでしょうか?

Discourse のテーマまたはプラグインを開発する場合、どちらも Git リポジトリにそのまま配置できます。

「いいね!」 3

返信ありがとうございます。おっしゃる通り、そのトピックについてはその通りです。コンポーネントと設定の同期についてはどうでしょうか?

プラグインコードは、必要に応じてマイグレーションやシードデータを定義できます。また、サイト設定に適切な値が設定されていることを保証することもできます。

「いいね!」 2

インストールを完全にクローンしたいです。

必要に応じてバックアップを取得し、復元できます。

「いいね!」 1

試行しましたが、復元時にエラーが発生します。


30 分経過しても、リストにコピーが表示されません。

バックアップには S3 を使用し、すべてのサイトで同じバックアップセットを共有できるようにしています。そうすれば、本番環境でバックアップを実行した直後に、ステージング環境で復元して、現在のデータと正しく動作するか確認できます。

「いいね!」 1

S3とは何ですか?これを使いたいのですが。

「いいね!」 1

オブジェクトストレージを使用したアップロード(S3 およびクローン)ファイルおよび画像のアップロードを S3 に設定する が起点となります。バックアップのみの場合、非常に簡単です。

Backblaze と Wasabi は安価です。また、Storj.io には私がバックアップに使用した製品もあります。

個人的な意見ですが、バックアップに関する有益なコメントの価値を損なうつもりはありませんが、少し立ち止まって考えてみましょう。Discourse のインストールを「同期」させることに、それほど多くの労力を費やす価値があるかどうかは疑問です。

Discourse コアへのプルリクエストを行うつもりがない限り、プラグインやテーマコンポーネント(TC)の開発に注力することが、カスタマイズのための最も堅牢で効率的な解決策となります。

プラグインやテーマコンポーネントの開発における重要な点は、それらが複数の Discourse インスタンスにデプロイされることであり、場合によってはそれらのインスタンスを制御できない可能性があるということです。

したがって、開発用に多少独自性のあるローカルの Discourse インスタンスを持つことは、(理にかなった範囲内であれば)全く問題ありません。

重要なワークフローとしては、プラグインや TC を共有リポジトリ(おそらく GitHub)で最新の状態に保つことが含まれます。

「いいね!」 3

完全に同意します。私には、カスタマイズが実際のデータに対して確認できない(または確認が最も容易な)いくつかのクライアントがおり、そのため彼らは現在のデータでサイトを確認することを非常に好みます。

「いいね!」 1

はい、その通りです。それは、あなたが何を達成しようとしているか、そして顧客基盤が単一のターゲットなのか複数の顧客なのか、さらにどれだけのコントロールを期待しているかによって異なります。

「いいね!」 1

皆様のご助言をありがとうございます。おそらく、Discourse コアへの PR として取り込むことになります。そのため、アセンブリを Git にアップロードし、そこからサーバーへ移行できる機能が必要となります。

Discourse コアへのプルリクエストの場合、ローカル環境の正確な設定は重要ではありません(最新バージョンを使用していることだけ確認してください)。コードのコントリビューションは、特にテストケースを伴う場合、非常に管理されたプロセスであるため、設定やコンテンツに多少の差異があっても問題になることはほとんどありません。

通常、共同コントリビューションを行う場合は、まず自身の組織のリポジトリにフォークして作業し、その後プルリクエストを行うものですか?

「いいね!」 2

いいえ、私は共同での貢献に取り組んでいるわけではありません。個人的な利用のために作業しています。

そのように表現するつもりはありませんでした。
Git のフォークから Discourse をインストールするにはどうすればよいですか?
Discourse コアに変更を加え、それを自分の Git リポジトリに追加する予定です。

なので、なぜインストールを同期する必要があるのか、私は混乱しています。

単にフォークを git clone してください。

通常、開発には Docker は使用しませんが、使用する場合はコンテナに入り、フォークをチェックアウトできます。

「いいね!」 1

例えば、現在 Discourse が設定されています。
すべてが準備できたら、ビルドを更新します。

その後、再び開発を再開します。コントロールパネルでいくつかの設定を変更します。それらの設定は多数ある可能性があります。
ビルドを更新したい場合、設定も更新する必要があります。

この場合、設定を手動で設定し直すことになります。

設定は永続的であり、あなたは単独で作業しているため、なぜバックアップや同期に焦点を当てる必要があるのでしょうか?

(また、トピックのタイトルが混乱を招きます。「チームで」である理由は何でしょうか?)

クローンやチェックアウトを行う際、設定が保持されるデータベースを消去することはありません。

マイグレーション(存在する場合)を実行するタイミングはあなたが制御できます。それ以外の場合、データベースは安定しているはずです。

「いいね!」 1