Flink コンソールは、GitHub、GitLab、Gitee などのリモート Git リポジトリとの統合をサポートしています。Realtime Compute for Apache Flink 開発コンソールを使用して、ジョブドラフトとフォルダをリモート Git リポジトリにプッシュしたり、リモートリポジトリからコードをプルしてジョブを開発およびデプロイしたりできます。この機能は、クラウド移行、共同開発、コード管理、品質保証、リスクガバナンス、ディザスタリカバリ、コンプライアンス管理など、さまざまなシナリオをサポートします。このトピックでは、Git を開発コンソールと統合する方法、およびコードをプルおよびプッシュする方法について説明します。
シナリオ
カテゴリ | シナリオ | 推奨される操作 |
クラウド移行 | Git を使用して、ローカルの Flink SQL コードを Alibaba Cloud Realtime Compute for Apache Flink などのクラウドクラスターに直接プッシュします。これにより、構成を手動でエクスポートおよびインポートする面倒な作業が不要になります。 |
|
共同開発とコード管理 |
|
|
品質保証とリスクガバナンス |
|
|
ディザスタリカバリとコンプライアンス管理 |
|
|
前提条件
Flink ワークスペースが作成されていること。詳細については、「Realtime Compute for Apache Flink のアクティブ化」をご参照ください。
Git リポジトリ (GitHub、GitLab、Gitee、Apsara DevOps など) が作成されているか、リモート Git リポジトリへのアクセス権限があること。
Git リポジトリが IP ホワイトリストを使用している場合は、Flink ワークスペースのネットワークアドレスをホワイトリストに追加します。
コードリポジトリをアタッチする前に、NAT Gateway を有効にして、Flink ワークスペース VPC とインターネット間のネットワーク接続を確立します。
注意
ジョブタイプ: 現在、SQL ジョブのみが Git 統合をサポートしています。
バインディングの制限:
プロジェクト管理者 (オーナー) または同等の権限を持つメンバーのみが、Flink プロジェクトにアタッチされた Git リポジトリ情報を構成および編集できます。
各プロジェクトは、1 つのコードリポジトリと 1 つのブランチにのみアタッチできます。複数の Git リポジトリまたは同じリポジトリの複数のブランチを管理するには、ブランチごとに個別のプロジェクトを作成する必要があります。プロジェクトの作成方法の詳細については、「プロジェクトの管理」をご参照ください。
フォルダレベル: 最大 7 階層までネストされた SQL フォルダをプルできます。Git 内の SQL ファイルが 7 階層より深い場合、開発コンソールにプルすることはできません。
Git システムと開発コンソールで同じファイルを同時に編集しないでください。同じファイルが両方で変更された場合、開発コンソールで変更をプッシュまたはプルすると競合チェックがトリガーされます。その後、手動で競合を解決する必要があります。Flink プラットフォームは、次のように競合を処理します。
操作タイプ
競合解決メカニズム
プル操作
システムは、競合しない更新を SQL ドラフトに自動的に適用し、競合する特定のファイルを通知します。続行する前に、競合を手動で解決する必要があります。
プッシュ操作
[変更をプッシュ] をクリックします。システムはメッセージ [リモートリポジトリに更新があります。更新をプルしてから再試行してください] を表示します。
プルプロセス中に競合が見つかった場合は、手動で解決してプルを完了する必要があります。
競合が解決された後、変更を再度プッシュします。
重要競合を手動で解決する前に、重要なデータをバックアップしてください。たとえば、
example.sqlファイルをローカルマシンにコピーできます。Flink プラットフォームは完全なロールバックをサポートしていません。操作の影響を評価し、誤った操作による元に戻せない結果を避けるために、注意して進めてください。Git で SQL ドラフトの構成情報を含む JSON ファイルのみを操作する場合、開発コンソールでのプル動作は次のルールに従います。
JSON ファイルの追加または削除: 開発コンソールは、対応する SQL ドラフトを追加または削除して変更を同期しません。
JSON ファイルの変更: 開発コンソールは、同じ名前の SQL ドラフトの構成情報を更新して変更を同期します。
ステップ 1: プロジェクトの Git リポジトリを構成する
(オプション) ネットワーク接続を確認します。
GitHub または GitLab リポジトリの場合、NAT Gateway を有効にして、Git リポジトリと Flink ワークスペース間のネットワーク接続を確保する必要があります。そうしないと、ネットワークの問題で Flink プロジェクトをアタッチできない場合があります。ネットワーク接続の詳細については、「ネットワーク接続方法の選択」および「接続テストを実行する方法」をご参照ください。
Realtime Compute for Apache Flink 開発コンソールに移動します。
ターゲットワークスペースの [アクション] 列で、[コンソール] をクリックします。
プロジェクトの Git リポジトリを構成します。
ページの右上隅で、プロフィール写真をクリックし、[ユーザー情報] をクリックしてプロジェクトリストページに移動します。

ターゲットプロジェクトの [アクション] 列で、[Git リポジトリ構成] をクリックします。

Git 構成情報を入力します。

構成項目
説明
リポジトリタイプ
GitHub、GitLab、Gitee がサポートされています。
リポジトリ URL
完全なリポジトリのアドレス。HTTP または HTTPS で始まり、
.gitで終わり、64 文字以内である必要があります。ユーザー名
Git プラットフォームのアカウントのユーザー名。ユーザーはターゲットリポジトリに対する権限を持っている必要があります。
パーソナルアクセストークン
ID 検証に使用されるアクセストークン。
トークンの取得方法の詳細については、「パーソナルアクセストークンの管理 (GitHub)」または「パーソナルアクセストークン (GitLab)」をご参照ください
ブランチ
コードの独立した開発ライン。ブランチを使用して、さまざまな機能やバージョンの開発を分離します。
プロジェクトは 1 つのブランチにのみアタッチできます。
[OK] をクリックします。
リポジトリをアタッチした後、新しいリポジトリまたはブランチに切り替えるには、まずプロジェクトリストからデタッチする必要があります。

ステップ 2: 変更をプルまたはプッシュする
変更をプッシュする
開発コンソールからリモート Git リポジトリに SQL コードと構成情報をプッシュします。プッシュする前に差分を表示できます。
ページで、[変更をプッシュ] をクリックします。

[コミットメッセージ] を入力し、[コミットしてプッシュ] をクリックします。
変更の種類は、変更されたファイルの右側に表示されます: 追加 (A)、変更 (M)、または削除 (D)。対応する文字をクリックして変更を表示できます。

Git でプッシュされたファイルの内容を表示します。

次の表に、Git にプッシュされたファイルを示します。
変更タイプ
説明
Git ファイル変更の例
追加
SQL ドラフトを Git にプッシュすると、同じ名前で異なるタイプの 2 つのファイルが作成されます:
filename.sql: SQL コード。filename.json: SQL ドラフトの構成情報。これには、ジョブ名、ジョブドラフト ID、ストリームまたはバッチプロパティ、および DPI エンジンバージョン番号が含まれます。

更新
対応する SQL コードまたは SQL ドラフト構成情報のみが更新されます。
SQL の変更

DPI エンジンバージョンの変更

変更をプルする
Git リポジトリから開発コンソールに SQL 情報をプルします。
ページで、[変更を同期] をクリックします。
最後の同期の時刻が [変更を同期] ボタンの右側に表示されます。時刻が最新でない場合は、[変更を同期] をクリックします。

Git に更新がある場合、プルボタンの横に [リモートに更新があります] メッセージが表示されます。

ページで、[変更をプル] をクリックします。
(オプション) システムが競合の存在を通知した場合は、手動で競合を解決します。それ以外の場合は、このステップをスキップします。
開発コンソールとリモート Git リポジトリの両方で同じファイルが変更された場合、コンテンツの競合が発生します。Flink システムは、競合していないファイルで開発コンソールを更新し、競合しているファイルに関する情報を通知します。競合を解決するには、[解決] をクリックし、必要に応じて競合を処理します。競合を解決した後、[解決済み] をクリックし、次に [続行] をクリックして操作を完了します。
重要競合を解決する前に、重要なデータをバックアップしてください。たとえば、
example.sqlファイルをローカルマシンにコピーできます。Flink プラットフォームは完全なロールバックをサポートしていません。操作の影響を評価し、誤った操作による元に戻せない結果を避けるために、注意して進めてください。
[解決] をクリックすると、競合解決ページが表示されます。ビジネスニーズに基づいて、適切な変更を 1 つずつ承認できます。

ボタン
意味
現在の変更を承認
現在の変更を承認します。
受信した変更を承認
受信した変更を承認します。
両方の変更を承認
両方の変更を承認します。
プルされた SQL ファイルを表示および変更します。
ページの先頭にメッセージ [リモートリポジトリから更新を正常にプルしました] が表示されると、[ETL] ドラフトページが自動的に更新され、プルされた SQL ドラフトが表示されます。
プルが完了すると、SQL ドラフトページに現在のジョブが Git によってロックされていることが示されます。ジョブを変更または削除する前に、[クリックしてロック解除] する必要があります。

参考資料
リポジトリのクローン、コードのコミット、プルリクエストの作成などの一般的な Git 操作の詳細については、「GitHub の使用」または「GitLab の使用」をご参照ください。
Git を使用してアプリケーションをビルドするための CI/CD の使用方法の詳細については、「GitLab CI/CD クイックスタート」または「GitHub Actions クイックスタート」をご参照ください。
