2

私は人々から多くの人から聞いていますトランクベースの開発。私はトランクベースの開発を行うときにJenkinsとの継続的な統合がどのように機能するのか理解していません。組織のバージョン管理にgitを使用します。Jenkinsはトランクベースの開発を使用するとビルドします

Jenkinsのジョブは、gitを変更するためにgitをポーリングするように設定されています。もしビルド中に検出され、ビルドが成功したら、deployを開始します。

すべての開発者はジェンキンスにアクセスでき、別のブランチで開始するようにビルドを構成できます。このコードは、テストのためにdevインスタンスにデプロイされます。開発者は、正常であると判断した場合、ジェンキンを再構成してマスターを指すようにビルドします。これはマニュアルであり、これを行うのは開発者の責任です。

定期的に実行され、Jenkinsジョブを標準ジョブで上書きするパイプラインジョブがあります。したがって、開発者が構成をねじから去っても、Jenkinsはビルドを正常な状態に保ちます。

フィーチャー/バグフィックスブランチを複数コミットして作業していますが、CI/CDプロセスのベストプラクティスは何ですか?

a)開発者は、それぞれのコミットの後でブランチをポイントし、devインスタンスにデプロイします。これは私が知る限りマニュアルであり、開発者はこれを簡単に忘れることができます。

b)開発者は、引き出し要求を作成してdevインスタンスにデプロイする前に、Jenniferビルドを支店にビルドするように指示します。コミットが複数ある場合は、コミットのためにビルド/デプロイメントが失敗する可能性があります。これもマニュアルであり、デバッグには苦労する可能性があります。

c)開発者は、ビルドをローカルで実行して、テストが合格することを確認します。展開は暗い芸術であり、他の誰かが理解できるように残されます。プルリクエスト後、ジェンキンズはビルドを実行して、すべてのテストが成功することを確認します。これは自動的です。ビルド/デプロイメントが失敗した場合、開発者は何がうまくいかなかったかを把握できます。

答えて

0

それはあなたのc)のように聞こえるが正しい方法ですが、私は状況を完全に把握していません。トランクベースの開発では、CI/Jenkinsはマージ前にのみ使用し、コミットごとには使用しないでください(ローカルビルドメカニズムに代わるものではありません)。開発者は、テストを手動で実行し、何か問題が発生した場合にデバッグすることで、コードをローカルで構築し、テストする必要があります。

マージ時に、事前マージまたはビルド後マージを実行できます。事前マージでは、Jenkinsを各プルリクエストブランチに対して実行するように設定し、すべてのテストが合格した場合はプルリクエストをマージします。これは、構成が非常に簡単です。欠点は、ビルドではトランクブランチの新しい変更を考慮しないため、テストがプルリクエストブランチで渡されたとしても、マージ後にトランクが破損する可能性があるということです。

ポストマージでは、トランクブランチからワークスペースをチェックアウトし、プルリクエストブランチから "git merge"を実行し、ワークスペースでビルドを実行できます。すべてのテストが合格した場合にのみ、変更を確定してトランクにプッシュします。それは、トランクが破損しないことを保証することです。欠点は、一度に1つのビルドしか実行できないため、マージする帯域幅が減少することです。

また、事前マージとマージ後の両方を同時に行うこともできます。トランクはまだマージから壊れているかもしれませんが、マージ後のビルドからすばやくキャッチして直ちに修正できます。

関連する問題