パイプラインにコードソーストリガーを設定し、トリガーイベントとフィルター条件を指定して、パイプラインの実行が自動的に開始されるタイミングを制御します。
コードソーストリガーの設定
コードソーストリガーを有効にして Webhook を設定すると、指定されたリポジトリとブランチにコードがコミットされたときに、Flow が自動的にパイプラインを実行します。
Alibaba Cloud DevOps Codeup
-
Alibaba Cloud DevOps で対象のパイプラインに移動し、[パイプラインを編集] をクリックして、[コードソースを編集] をクリックします。
-
[コードソースのトリガーを有効化] をクリックします。 Flow は、対応する Alibaba Cloud DevOps Codeup コードリポジトリに Webhook URL を自動的に追加します。
トリガーを有効にした後、[トリガーイベント] セクションで、[コードコミット]、[タグ作成]、[マージリクエスト完了]、[マージリクエスト作成/更新] などの目的のイベントタイプを選択します。また、[ブランチ/タグフィルター] と [コードパスフィルター] を有効にすることもできます。設定が完了したら、[追加] をクリックします。
トリガーを有効にすると、Flow は Alibaba Cloud DevOps Codeup コードリポジトリの [Webhook] 設定ページに自動的に Webhook を登録します。この Webhook は、[プッシュイベント]、[タグプッシュイベント]、[マージリクエストイベント] に対応しています。
その他のコードソース
-
パイプラインの編集ページで、[コードソースの編集] をクリックします。 [コードソースのトリガー] を有効にし、 Webhook URL をコピーします。
[トリガーイベント] セクションで [コードコミット] を選択し、コピーした Webhook URL を対応するコードリポジトリの Webhook トリガー設定に追加します。
-
コピーした Webhook URL を対応するコードリポジトリの設定に追加します。Alibaba Cloud DevOps は、GitLab、GitHub、Gitee、汎用 Git リポジトリのコードソーストリガーをサポートしています。設定方法はリポジトリのタイプによって異なります。
GitLab
GitLab コードリポジトリに移動し、 に移動します。パイプラインからコピーした Webhook URL を URL フィールドに貼り付けます。
[トリガー] セクションで [プッシュイベント] を選択します。
GitHub
GitHub コードリポジトリの に移動し、[Webhook を追加] をクリックします。 Flow パイプラインからコピーした Webhook URL を [ペイロード URL] フィールドに貼り付け、[コンテンツタイプ] には [application/json] を選択します。
トリガーについては、デフォルトオプションの [Just the push event.] をそのまま使用します。
Gitee
Gitee コードリポジトリで、 に移動します。 Flow パイプラインからコピーした Webhook URL を URL フィールドに貼り付けます。
汎用 Git
GitLab を例に、お使いの GitLab コードリポジトリに移動し、に移動します。パイプラインからコピーした Webhook URL を URL フィールドに貼り付けます。
SVN
-
パイプラインの編集ページでコードソーストリガーを有効にして、Webhook URL をコピーします。
トリガーイベントとして [コードコミット] を選択します。Webhook URL は
http://flow-openapi.aliyun.com/scmです。 -
SVN サーバー上で、リポジトリの
hooksディレクトリに移動します。フックスクリプトのテンプレートを見つけます。各テンプレートは 1 つのイベントに対応しています。テンプレートを使用するには、.tmplサフィックスを削除します。14:32 post-commit.tmpl 14:32 post-lock.tmpl 14:32 post-revprop-change.tmpl 14:32 post-unlock.tmpl 14:32 pre-commit.tmpl 14:32 pre-lock.tmpl 14:32 pre-revprop-change.tmpl 14:32 pre-unlock.tmpl 14:32 start-commit.tmpl -
post-commitを例に説明します。post-commitファイルはシェルスクリプトです。コードのコミット、ブランチの作成、タグの作成などの変更が検出されると、SVN はこのスクリプトを実行します。以下のスクリプト例は、コードコミット時に Flow パイプラインの実行をトリガーする方法を示しています。#!/bin/sh # リポジトリパスとコミットリビジョン番号が引数としてスクリプトに渡されます。 REPOS="$1" REV="$2" # svnlook を使用して、このコミットで変更されたディレクトリを検索します。 CHANGED_DIRS=$(svnlook dirs-changed -r "$REV" "$REPOS") # 最初に変更されたディレクトリパスを取得します。通常、これはトップレベルディレクトリです。 FIRST_CHANGED_PATH=$(echo "$CHANGED_DIRS" | head -n 1) # ブランチ構造が標準形式 (branches/branch-name) に従っていると仮定します。出力からブランチ名を解析できます。 BRANCH_NAME=$(echo "$FIRST_CHANGED_PATH" | sed 's#.*/branches/\([^/]*\).*#\1#') # パイプラインから提供された Webhook URL にリクエストを送信する curl コマンドを構築します。 # Webhook URL をパイプラインの URL に置き換え、例に示すようにリクエストデータをフォーマットします。 curl --location --request POST 'http://flow-openapi.aliyun.com/scm/webhook/MwfQPTyf4nif2UdWBooR' \ --header 'Content-Type: application/json' \ --data-raw "{ \"ref\": \"refs/heads/$BRANCH_NAME\", \"repository\": { \"clone_url\": \"svn://8.142.XX.XXXcom/svn/repos/demo\" } }"
-
トリガーイベント
トリガーイベントを使用して、コードソース別に Webhook イベントをフィルタリングします。次の表に、各コードソースタイプでサポートされているイベントを示します。
|
Alibaba Cloud Code |
Alibaba Cloud DevOps Codeup |
汎用 Git |
GitHub |
GitLab |
Coding |
Bitbucket |
セルフマネージド GitLab |
SVN |
|
|
コードコミット |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✘ |
✓ |
✓ |
|
タグ作成 |
✓ |
✓ |
✘ |
✘ |
✓ |
✘ |
✘ |
✓ |
✘ |
|
マージリクエスト作成/更新 |
✘ |
✓ |
✘ |
✘ |
✘ |
✘ |
✘ |
✘ |
✘ |
|
マージリクエスト完了 |
✘ |
✓ |
✘ |
✘ |
✓ |
✘ |
✘ |
✓ |
✘ |
コードコミット:ローカルブランチをリモートブランチにプッシュするか、コードプラットフォームの Web インターフェースでファイルを編集した際にトリガーされます (例:ローカルの master を origin/master にプッシュ)。Flow はターゲットブランチをフィルター条件と照合し、一致する場合はそのブランチを使用してパイプラインをトリガーします。
タグ作成:ローカルタグをサーバーにプッシュするか、コードプラットフォームの Web インターフェースでタグを作成した際にトリガーされます (例:ローカルタグ release/0.0.1 をサーバーにプッシュ)。Flow はタグ名をフィルター条件と照合し、一致する場合はそのタグをコードバージョンとして使用してパイプラインをトリガーします。
マージリクエスト作成/更新:コードプラットフォームの Web インターフェースでマージリクエストを作成または更新した際にトリガーされます。このイベントは Alibaba Cloud DevOps Codeup のみがサポートしています。例えば、リモートの dev ブランチ (ソース) から master (ターゲット) へのマージリクエストを作成すると、Flow はターゲットブランチをフィルター条件と照合し、一致する場合はソースブランチを使用してパイプラインをトリガーします。
マージリクエスト完了:マージリクエスト作成/更新イベントと同様ですが、Flow は実行にターゲットブランチを使用します。
フィルター条件
ブランチ/タグフィルター
フィルター条件は正規表現をサポートしています。master や dev などの特定のブランチを入力するか、Java スタイルの正規表現構文を使用します。例:
-
masterとdevなどの複数のブランチに一致させるには、master|devと入力します。 -
featureで始まるブランチに一致させるには、^feature.*と入力します。
コードパスフィルター
コードパスフィルターを使用すると、変更されたファイルのパスによってトリガーイベントをフィルタリングできます。この機能は、Alibaba Cloud DevOps Codeup ソースからのプッシュイベントのみをサポートしています。Flow は、コード変更がフィルタールールに一致する場合にのみパイプラインをトリガーします。フィルター条件は正規表現をサポートしています。例えば、auth-srv/.* と指定すると、auth-srv ディレクトリ内のコードが更新された場合にのみパイプラインがトリガーされます。