質問

私が働いているソフトウェア開発環境では、開発者のグループが全員同じ (Java) コードベースで作業しています (現在 SVN を使用しています)。人々は自分が構築したものを、「ビルドを中断」することなくコミットしたいことが多いことに気づきました。そのため、私は分岐や特にマージをより簡単にする Git や Mercurial のようなツールに注目しています。

私が目にしたことの 1 つは、開発者が「悪いコード」をコミットした場合、そのコードは全員にとって壊れているということです。これを回避するアイデアとして、その単一の新機能の変更セットが 1 つだけある、単純に現在の「マスター」である「中間の単一機能」リポジトリを作成する方法が必要です。このような「中間の単一機能」リポジトリは、メインのコード ベースの一部となる前に、自動的にテスト (コード品質、単体テスト、手動コード検査など) できます。

したがって、私が考えているワークフローは次のようになります。

  1. 開発者は新しい機能を作成し、これを毎日ローカルでコミットします。
  2. しばらくすると、開発者は作業を終了し、変更セット全体を送信して「メイン」リポジトリに統合します。
  3. 継続的インテグレーション システムは、現在の「マスター」を取得し、変更セットを適用してコード (マージ競合、PMD、Findbugs など) をチェックし、単体テストを実行し、コーディング スタイルをチェックします。
  4. CI システムが「不正なコード」と判断した場合、開発者にその理由が通知され、開発者は言及された問題を修正する必要があります。この場合、メイン リポジトリは変更されません。
  5. CI システムが「十分に良好」と判断した場合、コードは「主任開発者」または「コードレビュー担当者」に届き、選択されたソリューションを検査して承認または拒否されます。
  6. 承認された変更セットはメイン リポジトリに組み込まれ、すべての開発者がリベース/マージに使用できるようになります。

この種のワークフローについていくつか質問があります。

  • これは実際にうまく機能すると思いますか(つまり、これは良いアイデアですか、それとも本当に頭の悪いアイデアですか?)
  • これまでにこのようなものを扱ったことがありますか?良い点と悪い点は何でしたか?
  • 「すぐに実行できる」スクリプト/プロシージャ/ツール/... はありますか?これにより、そのようなワークフロー (またはこのアイデアのバリエーション) を最小限の時間ですぐに開始できるようになりますか?

ありがとう。


背景メモ:

私は 13 年ほど前、社内で同様のワークフローを構築している会社で開発者として働いていましたが、その会社では夜間に 2 つのビルドを行っていました。

  1. 「実稼働」バージョン:メインコードベース
  2. '上級バージョン:変更されたすべてのファイルの新しく送信されたすべてのバージョンを含むメイン コード ベース。

これはすべて SCCS (ロック編集アンロック モデル) ベースであったため、「頻繁にコミットする」方法がなく、コード変更によるデッドロックやその他あらゆる種類の厄介な影響が発生していました。私が探しているのは主に、当時私が使用していたものの良い点であり、今日のより優れたツールを使用しています。

役に立ちましたか?

解決

チームシティーは、プレテストは、機能をコミットしています。

http://www.jetbrains.com/teamcity/delayed_commit.htmlする

他のヒント

は、私が現在働いている会社で、私たちは、このようなアプローチを使用して考えました。最後に、我々は単純なものを使用することにしました。私たちは、自動化が成功したビルド後にラベルを設定し、我々はそのラベルに同期するために使用するツールを持って構築してみましょう。誰かがビルドを壊すときに、他の人々はまだリポジトリから作業版を取得することができます。同期ツールは、あなただけの何かを提出した場合、変更内容は、ラベルに属する改正によって置き換えされないことを確認します。完全にこの作品は、私たちのために、それはあなたの状況に適していない可能性があります。

よろしく、

Sebastiaan

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top