ベストプラクティス:TalendでGitを使う - 7.3

Version
7.3
Language
日本語 (日本)
Product
Talend Big Data Platform
Talend Data Fabric
Talend Data Management Platform
Talend Data Services Platform
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発

ベストプラクティス:TalendでGitを使う

外部のGitツールを使わずにプロジェクトが管理できるよう、Talendは強力なGitバージョン制御機能を提供しています。

Gitには数多くのワークフローがあります。この記事では最も一般的であるGit機能ブランチワークフローとGitflowワークフローの2つを取り上げ、その概要、およびTalend StudioでGitを使う時にこれらのワークフローに従う方法例を説明します。

Gitワークフローに関する詳細は、Comparing Workflowsをご覧ください。

Talend Studioでプロジェクトブランチとタグを使った作業に関する詳細は、Talend Data Fabric Studioユーザーガイドをご覧ください。

Git機能ブランチワークフロー

Git機能ブランチワークフローは、Talend Studioでチーム作業するうえで効率的です。このワークフローでは、mainブランチとは別の専用ブランチで機能開発がすべて行われます。

注: Talendが提供しているR2020-11以降のStudio月次アップデートをインストールしている場合のみ、Talend Studioにデフォルトで表示されるGitブランチはmasterではなく、(存在する時は)mainとなります。

機能ブランチワークフローは中央リポジトリーを前提としています。mainは公式のプロジェクト履歴を表します。新しい機能の作業を開始するたびに、開発者はローカルmainブランチで直接コミットする代わりに新しいブランチを作成します。したがって、mainブランチに触れることなく、複数の開発者が1つまたは複数の機能で同時に作業できます。

以下は、機能ブランチワークフローが使われたシナリオタイプ例です。これは、このモデルを利用できる数多い目的の一例です。

あるチームで、2人の開発者(AndyとLucy)が同じtalend-123という機能で作業しているとします。

最初に、Andyにこの新しい機能の作業が割り当てられました。彼は、Talend Studiomainに基づいて新しい機能ブランチtalend-123を作成しました。

注: 機能ブランチには説明的な名前(機能IDやJIRAチケット番号など)が必要です。

Andyは今、Talend Studiotalend-123というGitローカルブランチにログインしました。この時点で、このブランチはAndyのマシンにのみ存在しています。

リモートGitリポジトリーで機能ブランチが作成できるよう、AndyはTalend Studioで提供されているGitプッシュツールでプッシュを実行しました。

Andyはjob1job2という2つのジョブを作成しました。この変更は、保存時にローカルブランチに自動でコミットされます。次に彼は、Talend Studioで提供されているGitプッシュツールを使い、変更をリモートGitブランチに手動でプッシュしました。

ここで、Lucyにもこの機能の作業が割り当てられました。彼女はリモート機能ブランチであるtalend-123をローカルブランチとしてチェックアウトした後、このローカルブランチでジョブjob1を変更し、新しいジョブjob3を作成しました。

Lucyがジョブjob1で作業している間、Andyもジョブjob1で変更を行い、ローカル機能ブランチでジョブレットjoblet1を作成してリモートリポジトリーに変更をプッシュしました。

Lucyは自分のジョブであるjob1job3の変更をリモートブランチtalend-123にプッシュしようとしましたが、Andyもジョブjob1の変更をリモートリポジトリーにプッシュしたばかりだったため、Lucyのプッシュはリジェクトされました。

Lucyはまずリモート機能ブランチであるtalend-123からプルする必要がありますが、AndyもLucyもジョブjob1で変更を行ったため競合が見つかりました。

Lucyはこの競合を解決しなければなりません。このケースでは、LucyはAndyの変更をすべて受け入れ、競合を解決済みとしてマークしました。競合がすべて解決されると、プルが完了します。Lucyは自分の変更を正しくプッシュしました。

ブランチ間で競合を解決する詳細については、ブランチ間の競合を解決をご覧ください。

talend-123というリモート機能ブランチには現在、両開発者の変更が含まれています。

機能の開発が終わったら、開発者はリモート機能ブランチtalend-123での変更をリモートブランチmainにマージします。このマージは、リモートブランチmainをローカルブランチとしてチェックアウトし、リモートブランチtalend-123からプルしてマージするリクエストを実行し、ローカルブランチmainからリモートブランチmainにプッシュすることで行われます。

Gitflowワークフロー

Gitflowワークフローでは、プロジェクトリリースを中心にデザインされた厳密なブランチングモデルが定義されています。それによって、大型のプロジェクトでも管理できる堅牢なフラームワークの利用が可能です。

Gitflowワークフローでは、機能ブランチワークフローで必要とされるものを除けば目新しいコンセプトはありません。その代わりに、さまざまなブランチに非常に特定されたロールを割り当てて、対話の方法と時期を定義します。

Gitflowワークフローも全開発者の通信ハブとして中央リポジトリーを使用します。そして機能ブランチワークフローと同じく、開発者はローカルに作業し、ブランチを中央リポジトリーにプッシュします。唯一の違いはプロジェクトのブランチ構造にあります。

プロジェクト履歴を記録するため、このワークフローは1つしかないmainブランチの代わりに2つのブランチを使います。mainブランチは公式のリリース履歴を保管し、developブランチは機能の統合ブランチとして使われます。mainブランチのコミットはすべてバージョン番号でタグ付けされます。

Gitflowワークフローが使われる時のシナリオタイプ例は次のとおりです。

開発者であるAndyとLucyにそれぞれ、feature-123feature-456という新しい機能での作業が割り当てられたとします。

管理者はmainに基づいたdevelopブランチを作成し、Talend StudioでこのブランチをリモートGitリポジトリーにプッシュしました。

AndyはTalend Studiodevelopブランチに基づいた新しいブランチandy-feature-123を作成した後、新しく作成されたこのブランチに切り替えました。

Andyと同じく、LucyもTalend Studiodevelopブランチに基づいた新しいブランチlucy-feature-123を作成した後、新しく作成されたこのブランチに切り替えました。

現在、AndyとLucyは新しい機能の作業をしており、自分のローカル機能ブランチでジョブをそれぞれ作成し、変更をリモートリポジトリーにプッシュします。

Andyはまだ自分の機能で作業していますが、Lucyは自分の機能の作業が終わり、リリースの準備を始めました。

Lucyはリモートブランチdevelopをローカルブランチとしてチェックアウトした後、ローカルブランチdevelopに切り替えました。