最近、Webアプリの機能(自動サインアップ)が管理者によって延期されるという問題が発生しました。彼らは、開始が「冷たすぎる」と感じていたが、彼らが取り組んでいた他のすべての機能を公開したかったためです。
問題は、この機能が次のリリースでライブをプッシュする予定の他のすべての機能と一緒に終了したときに開発にマージされたため、通常のようにdev-> test-> masterをマージできないことです。
この問題をどのように回避できたでしょうか?
最近、Webアプリの機能(自動サインアップ)が管理者によって延期されるという問題が発生しました。彼らは、開始が「冷たすぎる」と感じていたが、彼らが取り組んでいた他のすべての機能を公開したかったためです。
問題は、この機能が次のリリースでライブをプッシュする予定の他のすべての機能と一緒に終了したときに開発にマージされたため、通常のようにdev-> test-> masterをマージできないことです。
この問題をどのように回避できたでしょうか?
回答:
1つのアプローチは、機能にフラグを立てることです。コードベースに存在することもできますが、構成により無効にできます。
もう1つのオプションは、機能のマージを元に戻すコミットを元に戻して、開発中でないようにすることです。復帰を元に戻す新しいブランチを作成し、後でマージするために保留のままにすることができます。Githubプルリクエストを使用している場合は、マージされたプルリクエストの[マージを元に戻す]ボタンを使用して簡単にこれを行うことができます。
Feature Toggling
Doc Brownが呼んだように、6か月以上開発中の機能があり、それらはによって隠されています。これにより、非実稼働環境で機能(または機能の欠如)をテストすることもできます。これらの機能が既存の機能に追加される場合があります。その場合、古い機能セットと新しい機能セットの両方について単体テストを行う必要があります。各単体テストは、現在のテストを実行するために必要なものにフラグを設定するだけです。
この問題をどのように回避できたでしょうか?
プロセスの観点から、以下を把握します。
おそらく、途中でコミュニケーションが落ちていました。これが機能しない場合、開発プロセスはビジネス要件の誤った理解と誤った理解に基づいているため、これは重要です。
経営陣の問題をしばらく忘れて、コードベースに深く統合された最新の製品リリースに既に「自動サインアップ機能」があったと想像してください。これで、「自動サインアップ」の「オフスイッチ」を追加する新しい要件が得られました。Gitワークフローでこれをどのように処理しますか?
「構成による自動サインアップの無効化」を単に追加機能として宣言することになると思うので(これは単なるFeature Toggleの形式です)、これはワークフローにスムーズに統合されるはずです。必要に応じて機能ブランチを使用できる場合(または、そのような問題に機能ブランチを使用しない場合)、労力を見積もることができます。そして、あなたが説明したusal "merge dev-> test-> master"フローを間違いなく使用できます。
それが実際にあなたの現在の状況でこれを処理できる方法です。gitワークフローの観点からは、変更要求がリリース1.0の管理者からのものであるか、変更要求がリリース2.0を希望する新しい顧客であるかは問題ではありません。
これは、gitflowとGitHubフローで私が抱えている正確な問題であり、Webアプリケーションではこれが頻繁に発生するようです。この問題を遡及的に解決するか(上記を参照)または先を見越して(下記の例を参照)解決するようです。
標準のgitflowブランチに加えて、「バンドルブランチ」を作成しました。バンドルは、uat / qaに対応するすべての機能で構成されています。uat / qa機能のリストが作成されます。これらは一時的なバンドルにマージされ、そのバンドルはuat / qaにデプロイされます。バグ修正はすべて元の機能ブランチで行われ、それがバンドルに再びマージされてデプロイされます。これにより、今後のリリースが分離され、開発ブランチへの道を見つける前にこれらの機能を一緒にテストできます。承認されたブランチは、gitflowプロセスに従ってプルリクエストを開発に取り込みます。テスト準備機能は、一時的なバンドルブランチに追加または削除して、再デプロイできます。
短所には、バンドルリストの管理と別のブランチタイプの追加が含まれます。しかし、手遅れだと思うレトロな修正に加えて、これはより実行可能な解決策のようです。
GUIアドオンでは、自動化を念頭に置いて、バンドルの展開ごとに機能ブランチをオフにすることが最適な場合があります。