Git 統合機能により、Realtime Compute for Apache Flink の開発コンソールとリモート Git リポジトリ (GitHub、GitLab、または Gitee) との間でジョブコードと設定を同期できます。 この統合により、ローカル環境からコードを移行し、チーム間で共同開発を行い、コードレビューワークフローを適用し、監査可能な変更履歴を維持できます。
ユースケース
| ユースケース | 解決する課題 | 推奨アプローチ |
|---|---|---|
| クラウド移行 | 手動でのエクスポートやインポートを行わずに、Git を介してローカルの Flink SQL コードをクラウドの Flink クラスターにプッシュできます。 | コードをプルした後、コンソールで直接開発を続けます。 プルしても Git リポジトリは変更されません。 |
| 共同開発 | ジョブの下書きと設定を共有し、バージョン管理できます。 並行開発やバグ修正のためにフィーチャーブランチ (例:feature/topic) を作成し、テストに合格したら main ブランチにマージできます。 |
すべての SQL コードの変更は Git を介してコミットし、コンソールはプルと検証に使用します。 Git のブランチ管理を使用して、main ブランチを安定させることができます。 |
| 品質保証とリスクガバナンス | コードレビューにはプルリクエストを使用できます。 テストのためにコードをコンソールにプルできます。 コミット履歴を使用して変更を追跡し、問題を特定できます。 | すべての SQL コードの変更は Git を介してコミットします。 変更を追跡可能に保つために、コミット履歴を定期的に確認します。 |
| 災害復旧とコンプライアンス | Git は、偶発的なファイル削除に対する分散バックアップを提供します。 Git ログは、監査コンプライアンスのために、すべてのジョブロジックの変更の検証可能な記録を提供します。 | SQL コードの更新を定期的に Git にプッシュします。 必要に応じて Git からコードを復旧します。 すべての重要な操作を追跡するために Git ログを使用します。 |
前提条件
開始する前に、以下のものが揃っていることを確認してください:
-
Flink ワークスペースが作成されていること。 詳細については、ワークスペースの作成をご参照ください。
-
リモート Git リポジトリ (GitHub、GitLab、Gitee、または Alibaba Cloud DevOps) へのアクセス権があること
-
お使いの Flink ワークスペースでインターネットアクセスが有効になっていること。 詳細については、インターネットアクセスの設定をご参照ください。
-
(IP ホワイトリストに登録されたリポジトリの場合) お使いの Flink ワークスペースの IP アドレスがリポジトリのホワイトリストに追加されていること
制限事項
| 制約 | 詳細 |
|---|---|
| サポートされるジョブタイプ | SQL のみ |
| 権限 | Git 統合を設定したり、既存の設定を編集したりするには、名前空間の所有者または同等の権限を持つメンバーである必要があります。 |
| 名前空間ごとに 1 つのリポジトリ | 各名前空間は、1 つの Git リポジトリと 1 つのブランチにのみバインドできます。 複数のリポジトリやブランチを管理するには、追加の名前空間を作成してください。 |
| フォルダー階層 | 最大 7 階層です。 8 階層目以降のファイルは Flink にプルできません。 |
| JSON ファイルの同期 | Git での .json ファイルの追加または削除は、コンソールには反映されません。 .json ファイルを変更すると、同じ名前の SQL 下書きの設定が更新されます。 |
| マージコンフリクト | Git とコンソールで同時に同じファイルを編集することは避けてください。 同時に編集が行われた場合、Flink はプッシュまたはプルの際に競合チェックを実行し、手動での解決が必要になります。 |
ステップ 1:Git リポジトリと名前空間の関連付け
-
インターネット接続を作成し、接続をテストします。 インターネット接続が既に存在する場合は、このステップをスキップしてください。
-
開発コンソールに移動します。
-
対象のワークスペースの [Actions] 列で、[Console] をクリックします。
-
名前空間の Git リポジトリを設定します。
-
右上隅のプロフィール写真をクリックし、[User Profile] をクリックします。
-
お使いの名前空間の [Actions] 列で、[Git Config] をクリックします。
-
Git リポジトリの設定を入力します。
フィールド
説明
[プロバイダー]
Git プロバイダー。 有効な値:GitHub、GitLab、Gitee。
[リポジトリ URL]
お使いの Git リポジトリの URL。
HTTPまたはHTTPSで始まり、.gitで終わる必要があります。 最大長は 64 文字です。[ユーザー名]
お使いの Git アカウントのユーザー名。 このアカウントには、対象リポジトリに対する必要な権限が必要です。
[パーソナルアクセストークン]
認証に使用されるパーソナルアクセストークン (PAT) です。
手順については、「パーソナルアクセストークンの管理」(GitHub) または「パーソナルアクセストークン」(GitLab) をご参照ください。
[ブランチ]
この名前空間にバインドするブランチ。 各名前空間は 1 つのブランチにのみバインドできます。
-
[OK] をクリックします。 これで Git リポジトリとブランチが名前空間に関連付けられました。 バインドが成功すると、[Git Config] ダイアログに、バインドされたリポジトリの URL、ユーザー名、ブランチ、およびパーソナルアクセストークンの保存ステータスが表示されます。 現在のリポジトリのバインドを解除するには、[Unbind] をクリックします。 別のリポジトリまたはブランチに切り替えるには、[Git Config] をクリックして現在のバインドを解除し、新たに設定します。
-
ステップ 2:更新のプッシュまたはプル
| 操作 | 使用するケース |
|---|---|
| 変更のプッシュ | コンソールからリモート Git リポジトリに SQL コードと設定の変更を送信します。 |
| 変更のプル | リモート Git リポジトリからコンソールに SQL コードまたはジョブ設定を取り込みます。 |
| マージコンフリクトの解決 | プッシュまたはプルの際に、同じファイルが両方の場所で編集されたために検出された競合を修正します。 |
変更のプッシュ
-
[Development] > [ETL] ページで、[Git - Push] をクリックします。
-
[Changes] フィールドで、追加 ([A])、変更 ([M])、削除 ([D]) を確認します。 文字をクリックすると差分が表示されます。
-
[Commit Message] を入力し、[Commit And Push] をクリックします。 競合によりプッシュが拒否された場合、システムはまずリモートリポジトリから更新をプルするように促します。 プルした後、マージコンフリクトを解決してから、再度プッシュしてください。
[Git - Push] ダイアログには [Repository URL] フィールドと [Branch] フィールドが表示されており、コミットする前にプッシュ先を確認できます。
-
Git リポジトリで結果を確認してください。 Git にプッシュされた新しい SQL 下書きは、同じ名前で拡張子が異なる 2 つのファイルを生成します。 更新すると、対応する
.sqlまたは.jsonファイルが変更されます。-
filename.sql— SQL コード。 -
filename.json— 下書き名、下書き ID、実行モード、エンジンバージョンなどのジョブ設定。
-
変更のプル
-
[Development] > [ETL] ページで、[Git - Synchronize Changes] をクリックして Git から最新の状態を取得します。 最終同期の時刻がアイコンの右側に表示されます。 最新でない場合は、アイコンをクリックして更新してください。 Git で利用可能な更新がある場合、プルアイコンの横に [Update Available] が表示されます。
-
[Git - Pull] をクリックします。
-
競合が存在しない場合は、ステップ 3 に進んで結果を表示します。
-
競合が検出された場合は、後述のマージコンフリクトの解決をご参照ください。
ページ下部のステータスバーで、Git ブランチが [main] と表示されており、新しいリモートコミットが検出されると、青色の [Update Available] リンクが表示されます。 このリンク (ツールチップ: [Git - Pull]) をクリックして、プル操作を開始してください。
-
-
ページに ["Successfully pulled from the remote repository"] と表示されると、[ETL] ページが更新され、プルされた SQL 下書きが表示されます。 プルした後、プルされた下書きは Git によってロックされます。 変更または削除するには、[Click To Unlock] をクリックしてください。
CREATE TEMPORARY TABLE test_source( a BIGINT, b INT ) WITH ( 'connector'='datagen' );
マージコンフリクトの解決
Realtime Compute for Apache Flink は、全体的なロールバックをサポートしていません。 競合を解決する前に、重要なデータ (たとえば、example.sql をローカルにコピーするなど) をバックアップし、運用への影響を評価してください。 競合の不適切な処理は、元に戻せない結果につながる可能性があるため、慎重に作業を進めてください。
-
競合しているファイルで、[Resolve] をクリックしてください。
-
競合解決ページで、競合しているコードを選択し、適切なアクションを選択してください。
ボタン アクション [Accept Current Change] コンソール上の現在のコードバージョンを保持します。 [Accept Incoming Change] リモート Git リポジトリからの変更を適用します。 [Accept Both Changes] ローカルとリモートの両方の変更を適用します。 <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (現在の変更 CREATE TEMPORARY TABLE vvpnntest_source( ======= CREATE TEMPORARY TABLE nntest_source( >>>>>>> c658aa9 vvp git pull (受信した変更) a BIGINT, b INT ) WITH ( 'connector'='datagen' ); <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (現在の変更 CREATE TEMPORARY TABLE vvpnntest_sink( ======= CREATE TEMPORARY TABLE nntest_sink( >>>>>>> c658aa9 vvp git pull (受信した変更) a BIGINT, b INT ) WITH( 'connector'='blackhole' ); <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (現在の変更 INSERT INTO vvpntest_sink ======= INSERT INTO nntest_sink >>>>>>> c658aa9 vvp git pull (受信した変更) SELECT * <<<<<<< Upstream, based on branch 'master' of https://gitee.com/xxx/test.git (Current FROM vvpnntest_source; ======= -
[Mark As Resolved] をクリックしてください。
-
[Continue] をクリックしてください。
次のステップ
-
リポジトリのクローン、コードのコミット、プルリクエストの作成などの一般的な Git 操作については、GitHub スタートガイドまたはGitLab Git チュートリアルをご参照ください。
-
CI/CD を使用してデプロイを自動化するには、GitLab CI/CD クイックスタートまたはGitHub Actions クイックスタートガイドを参照してください。GitLab CI/CD クイックスタートまたはGitHub Actions クイックスタート