API カタログ CLI を使用したアセットのパブリッシュ

api-catalog publish-asset​ コマンドを使用して、API 定義を Exchange にパブリッシュできます。このコマンドを CI/CD パイプラインやカスタムスクリプトなどの自動化ツールに組み込み、API アセットのカタログ化を自動的にトリガーします。コマンドでは、​--descriptor-file​ オプションで指定されたファイルの情報を使用して API 定義をパブリッシュします。

api-catalog publish-asset

> api-catalog publish-asset [flags]

このコマンドは、次のフラグに加えて、​一般フラグと認証フラグ​を受け入れます。

フラグ 説明

--async

パブリッシュジョブを非同期で実行します。

-d, --descriptor-file=descriptor-file

または

ANYPOINT_DESCRIPTOR_FILE​ 環境変数

デフォルト: ./catalog.yaml

カタログ記述子ファイルの名前と場所。

  • ファイルが存在しない場合、アセットはカタログ化されません。

  • ファイルが存在しても空の場合、このコマンドはカタログ記述子 YAML の結果を作成して出力します。現在の作業ディレクトリに関連する完全なディレクトリツリーで見つかったすべての API 定義のカタログ情報を出力します。

  • 有効な YAML ファイルが存在する場合、このコマンドはアセットを指定されたとおりにカタログ化します。

「CLI を使用した記述子ファイルの作成」​を参照してください。

--dry-run

コマンドを実行して、記述子ファイルが有効であることを確認します。API はパブリッシュされません。

--force-publish

比較せずに、コンテンツに関係なく Exchange に新しいバージョンのアセットを作成します。

--force-update-metadata

コンテンツに関係なく、タグなどのアセットのメタデータを Exchange の最新バージョンに更新します。アセットは再パブリッシュされません。

--json

実行結果を JSON 形式で出力します。

-s, --silent

サイレントログを有効にします。

-t, --trigger-criteria=<descriptor-tag>:<value> --trigger-criteria=<descriptor-tag>:value

このフラグは、記述子ファイルの ​triggerConditions​ セクションと連携して機能します。​api-catalog publish-asset​ コマンドを実行するたびに、トリガー値が記述子ファイルのトリガー条件値と比較され、記述子ファイルに記述されている API をパブリッシュするかどうかが決定されます。複数の条件と照合するには、条件ごとに個別の ​--trigger-criteria​ フラグを指定します。API をパブリッシュするには、記述子ファイルに設定されたすべてのトリガー条件が ​--trigger-criteria​ フラグ値で照合される必要があります。

例:

--trigger-criteria=branch:main --trigger-criteria=anytag:release/ --trigger=user:admin

「記述子 YAML スキーマ」​を参照してください。

-v, --verbose

冗長ログを有効にします。

--version-strategy-criteria=<descriptor-tag>:<value> --version-strategy-criteria=<descriptor-tag>:<value>

このフラグは、記述子ファイルの ​versionStrategyConditions​ セクションと連携して機能します。​api-catalog publish-asset​ コマンドは、バージョン戦略条件値を記述子ファイル内のバージョン戦略条件値と比較して、API のパブリッシュに使用するバージョン戦略を決定します。複数の条件と照合するには、条件ごとに個別の ​--version-strategy-criteria​ フラグを指定します。

例:

--version-strategy-criteria=branch:main --version-strategy-criteria=anytag:release/ --version-strategy-criteria=user:admin

「記述子 YAML スキーマ」​を参照してください。

始める前に

API 定義を記述する記述子ファイルを作成し、ファイルをパブリッシュしたり、API プロジェクトが保存されているファイルパスにコピーしたりします。​「CLI を使用した記述子ファイルの作成」​を参照してください。

CLI を使用して API 定義をパブリッシュする手順は、次のとおりです。

  • api-catalog publish-asset​ コマンドを実行します。次の例では、​catalog.yaml​ ファイルで記述された API 定義をパブリッシュします。

    > api-catalog publish-asset -d catalog.yaml --host=anypoint.mulesoft.com --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct

次のセクションのコマンド例は、いくつかのカタログフラグの使用方法を示しています。

デフォルト設定を使用してアセットをパブリッシュする

次の例では、Anypoint Platform の US コントロールプレーンの組織に API をパブリッシュします。指定されていないフラグでは、デフォルト、ログイン情報設定ファイルの設定、環境変数の設定が使用されます。

> api-catalog publish-asset --organization 1234abc-b34a-7cd3-4s32-12345abc2345

Dry Run を実行して記述子ファイルを検証する

この例は、次のフラグを使用する ​api-catalog publish-asset​ コマンドを示しています。

  • --dry-run: コマンドを実行して、記述子ファイルが有効であることを検証しますが、API はパブリッシュしません。

  • --verbose: 結果の最大情報を表示します。

このコマンド例では、標準出力を ​mycatdryrun.log​ に送信します。

> api-catalog publish-asset --host=anypoint.mulesoft.com -d catalog.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --client_id=1787c36ab544466698e380131040faad --client_secret=2dA616efca1E4181A2A77BBF046868BE --dry-run --verbose >> mycatdryrun.log

コンテンツに関係なくアセットをパブリッシュする

コンテンツに関係なく新しいバージョンのアセットを Exchange にパブリッシュするには、​--force-publish​ フラグを使用します。

この例は、これらの両方のフラグを使用する ​api-catalog publish-asset​ コマンドを示しています。指定されていないフラグでは、デフォルト、ログイン情報設定ファイルの設定、環境変数の設定が使用されます。

> api-catalog publish-asset --host=anypoint.mulesoft.com --descriptor-file=mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --force-publish

条件を使用してパブリッシュをトリガーする

カスタムトリガー条件を使用すると、API カタログ ​publish-assets​ が CI/CD パイプラインまたはスクリプトの一部として実行されるときに API をパブリッシュするかどうかを制御できます。この例は、記述された API をパブリッシュするかどうかを制御するために ​--trigger-criteria​ フラグが記述子ファイルのトリガー条件にどのように関連付けられるのかを示しています。トリガー条件が API レベルで設定されている場合、その設定はグローバルレベルで設定された条件よりも優先されます。

記述子ファイルのトリガー条件の例

グローバルレベルの ​mydescriptor.yaml​ 記述子ファイルの ​triggerConditions​ セクションの例を次に示します。


triggerConditions:
 ref:
  - main
 tags:
  - migrate
  - republish
 status:
  - complete
  - ready

パブリッシュをトリガーする例

次のコマンドは、トリガーオプション値が ​mydescriptor.yaml​ 記述子ファイルのすべてのグローバルトリガー条件と一致するため、API のパブリッシュをトリガーします。

> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct --trigger-criteria=ref:main --trigger-criteria=tags:migrate --trigger-criteria=status:complete

パブリッシュをトリガーしない例

次のコマンドは、​ref​ のトリガーオプション値が ​main​ ではなく ​test​ であるため、API のパブリッシュをトリガーしません。すべてのトリガー値が対応するグローバルトリガー条件と一致しないため、API はパブリッシュされません。

> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct --trigger-criteria=ref:test --trigger-criteria=tags:migrate --trigger-criteria=status:complete

条件を使用してバージョン戦略を設定する

バージョン戦略条件を使用すると、API カタログ ​publish-asset​ コマンドが CI/CD パイプラインまたはスクリプトの一部として実行されるときにアセットのバージョンを設定するかどうかを制御できます。この例は、記述された API のバージョン戦略を設定するために ​--version-strategy-criteria​ フラグが記述子ファイルのバージョン戦略条件にどのように関連付けられるのかを示しています。バージョン戦略条件が API レベルで設定されている場合、その設定はグローバルレベルで設定された条件よりも優先されます。条件の値が複数のバージョン戦略と一致する場合、コマンドでエラーが発生します。

記述子ファイルのバージョン戦略条件の例

mydescriptor.yaml​ 記述子ファイルの ​versionStrategyConditions​ セクションの例を次に示します。

versionStrategyConditions:
patchIncrease:
branch:
 ‘main’
author:
 ‘admin’
snapshot:
branch:
‘test’
‘Develop’

パブリッシュ中にバージョン戦略を設定する例

次のコマンドは、オプション値が ​mydescriptor.yaml​ 記述子ファイルの複数の条件と一致するため、パブリッシュ中に複数のバージョン戦略を設定します。

> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 --username=myAnyPtAccount --password=myPwd@4!myacct --version-strategy-criteria=branch:main --version-strategy-criteria=author:admin --version-strategy-criteria=branch:test --version-strategy-criteria=branch:Develop

結果のバージョン戦略は次のようになります。

  • パッチの増分 (作成者が ​admin​ の ​main​ 分岐の API の場合)。

  • スナップショット (​test​ および ​Develop​ 分岐の API の場合)。

パブリッシュ中にバージョン戦略を設定しない例

次のコマンドは、どの値も対応する条件と一致しないため、パブリッシュ中にバージョン戦略を設定しません。記述子ファイルの ​versionStrategy​ タグで他の値が設定されていない場合、バージョン戦略はデフォルトの ​patchIncrease​ になります。

> api-catalog publish-asset --host=anypoint.mulesoft.com -d mydescriptor.yaml --organization=1234abc-b34a-7cd3-4s32-12345abc2345 -u myAnyPtAccount -p myPwd@4!myacct ----version-strategy-criteria=branch:abc ----version-strategy-criteria=author:dev ----version-strategy-criteria=branch:xyz ----version-strategy-criteria=branch:pop

バージョン戦略とバージョン戦略条件についての詳細は、​「記述子 YAML スキーマ」​を参照してください。

Jenkins スクリプトを使用してパブリッシュする

この例は、​api-catalog publish-asset​ コマンドを実行する Jenkins スクリプトを示しています。

pipeline {
    agent any
    environment {
        ANYPOINT_ORG_ID = '1234abc-b34a-7cd3-4s32-12345abc2345'
        CATALOG_DESCRIPTOR = './descriptor.yaml' (1)
     }
     stages {
        stage('git checkout') {
            steps {
                git url: 'git@github.com:mygitlocation/api-catalog-cli.git'
                // additional checkout tasks
            }
        }
        stage('Build Artifacts') {
            steps {
                 // building
            }
        }
        stage('API Cataloging') {
            steps {
                 withCredentials([
                    usernamePassword(credentialsId: 'my-anypoint-creds',
                    usernameVariable: 'ANYPOINT_USERNAME',
                    passwordVariable: 'ANYPOINT_PASSWORD')
                ]) {
                    sh 'api-catalog-cli publish-asset -d $CATALOG_DESCRIPTOR --organization=$ANYPOINT_ORG_ID --host=anypoint.mulesoft.com/ --trigger-criteria=branch:main' (2)
                }
            }
        }
         stage('Deploy') {
            steps {
                // Any deployment tasks to be performed, here.
            }
        }
    }
1 組織と記述子ファイルの値を定義する
2 api-catalog publish-asset​ コマンドを実行して、​main​ Github 分岐で検出される API をパブリッシュする