2022年3月7日
Continuous Delivery
Continuous Integration
Gitブランチングは、設定変更を簡単に行う方法を提供し、CI/CDパイプラインの開発、テスト、保守にかかる時間を短縮します。その方法をご覧ください。
バージョン管理システムは、ファイルのバージョンを追跡し、またブランチング、修正、テスト、そして承認とCIチェックを経てメインブランチにマージすることによって単独で変更を行うという概念をもたらしました。
Git Experienceは、パイプラインやコネクターなどのHarnessエンティティに対しても同様のパラダイムでブランチを作成することができます。メインブランチからフォークアウトして、他の人が壊さないように変更を加え、分離してテストし、他のコード変更と同じようにmasterブランチにマージすることができるのです。
Gitブランチングには、以下のような要件がありました。
この要件に合わせるために、次のような課題がありました。
最適化するために、Mongoをキャッシュとして使い、全てのエンティティをパースしてデータベースに保存しています。これにより、Gitから取得するときに直面するパフォーマンスのボトルネックを克服することができます。
全てのGitプロバイダーはGitのさまざまなイベントに対するWebhookを持っているので、それを使ってMongoを更新します。Gitエクスペリエンスを有効にすると、Gitに Webhookを自動登録します。この結果、HarnessはGitのさまざまな種類のイベントを受け取ることになります。
イベントを受信すると、キューに入れ、非同期でシステムを更新します。例えば、branch-createイベントを受け取ると、UIに表示されるブランチリストを更新します。同様に、branch-deleteイベントを受け取ると、Harness Mongoのキャッシュからそのブランチを削除します。さらに、pushイベントを受け取ると、コミット内の全ファイルの内容を取得し、Harnessのエンティティを更新します。
ブランチとリポジトリーのフィルターを最適化するために、他のデータとともにエンティティに保存します。
Gitで新しいブランチを作成しても、常に設定が変更されるとは限りません。ユーザーが特定のブランチを同期させたいときのために、オンデマンド同期を提供しています。同期を開始すると、そのブランチの全てのエンティティを取り出し、パースして、Mongoに保存します。
Harness UIからエンティティの追加/修正を行いたいユーザーのために、Gitプロバイダーと同様のユーザーエクスペリエンスを提供しました。
ユーザーがHarnessに行ったコミットやHarnessから行ったコミットを特定するために、ユーザープロファイルという概念を使用しています。ユーザープロファイルの下にはソースコードマネージャーがあり、ユーザーはGitに変更を加えるために個人用のアクセストークンを提供する必要があります。SCMは、プロジェクトやパイプライン、コネクターなどに変更を加える人を監査するのに便利です。また、リポジトリーに設定されたブランチングルールを守るのにも役立ちます。
Harness UIからGitにプッシュする際、PRを作成するだけでなく、新しいブランチや既存のブランチにプッシュする機能を提供しました。これにより、ユーザーはブランチをフォークし、マージする前にレビューを受けることができます。さらに、この機能により、設定変更のレビュー中に他の人がメインブランチからPipelinesの作業を継続することができます。
マル チリポジトリーシナリオでユーザーがシームレスに体験できるように、デフォルトのブランチエンティティをリストアップし、ユーザーはリポブランチでフィルタリングしてエンティティを取得することができます。さらに、複数のブランチがある場合、ユーザーは任意のブランチでフィルタリングして、全てのエンティティを見ることができ、高度なフィルタリングも適用できます。
ブランチをシームレスに切り替えて比較できるように、各エンティティの詳細画面でユーザーがブランチを切り替えられるようにしました。
Git SyncとGitブランチングは、最新のDevOpsソリューションに多くの可能性を約束します。これらは、設定変更を簡単に行う方法を提供し、開発者がCI/CDパイプラインの開発、テスト、保守にかかる時間を全体的に短縮するのに役立ちます。特にブランチングでは、本番環境にプッシュする前にブランチ内の全ての設定変更を分離してテストすることができます。さらに、誤った設定変更のために誰かをブロックすることもなくなります。
私たちのブログ記事をもっと読んでみませんか。HarnessでGitOpsをどのように行っているかをご覧ください。また、姉妹記事のGit Sync Experienceを見逃した方は、今すぐ是非。
この記事は、Abhinav Singh、Akash Nagarajan、Rama Tummala、Deepak Patankarの協力により執筆されました。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。