この記事では、API 仕様ファイルが GitHub リポジトリに追加されたときに、組織の API Center に API を登録するための基本的な GitHub Actions ワークフローを設定する方法について説明します。
GitHub Actions ワークフローを使用して API を API Center に登録すると、新しい API または更新された API ごとに一貫性のある反復可能な CI/CD プロセスが提供されます。 このワークフローを拡張して、API 登録にメタデータを追加するなどのステップを含めることができます。
次の図は、GitHub Actions ワークフローを使用して API Center への API 登録を自動化する方法を示しています。
API 定義ファイルを追加する pull request がマージされたときにトリガーされる GitHub Actions ワークフローをリポジトリに設定します。
GitHub リポジトリのメイン ブランチからブランチを作成します。
API 定義ファイルを追加し、変更をコミットして、新しいブランチにプッシュします。
pull request を作成して新しいブランチをメイン ブランチにマージします。
pull request をマージします。
マージによって、API Center に API を登録する GitHub Actions ワークフローがトリガーされます。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
注意
az apic コマンドには、apic-extensionAzure CLI 拡張機能が必要です。
az apic コマンドを使用していない場合は、最初の az apic コマンドの実行時に拡張機能を動的にインストールするか、拡張機能を手動でインストールできます。 Azure CLI 拡張機能の詳細については、こちらを参照してください。
API 定義ファイルを追加する pull request がマージされたときにトリガーされる GitHub Actions ワークフローを構成します。 ワークフロー YAML ファイルには、Azure CLI を使用して定義ファイルから API Center に API を登録するステップが含まれています。
サービス プリンシパル シークレットを設定する
次のステップでは、Microsoft Entra ID サービス プリンシパルを作成します。これは、Azure で認証するためのワークフローに資格情報を追加するために使用されます。
az ad sp create-for-rbac コマンドを使用して、サービス プリンシパルを作成します。 次の例では、最初に az apic show コマンドを使用して、API Center のリソース ID を取得します。 その後、API Center の API Center Service 投稿者ロールを使用してサービス プリンシパルが作成されます。
Azure API Center の Visual Studio Code 拡張機能を使用すると、拡張機能コマンドを実行して開始ワークフロー ファイルを生成できます。 コマンド パレットで、[Azure API Center: API の登録] を選択します。
[CI/CD]>[GitHub] を選択します。 その後、シナリオに合わせてファイルを変更または拡張できます。
name: Register API Definition to Azure API Center
on:
pull_request:
types: [ closed ]
branches:
- [ "main" ]
paths:
- "APIs/**/*.json"
permissions:
contents: read
pull-requests: read
jobs:
register:
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v2
- name: Get specification file path in the PR
id: get-file-location
uses: actions/github-script@v5
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const pull_number = context.payload.pull_request.number;
const owner = context.repo.owner;
const repo = context.repo.repo;
const files = await github.rest.pulls.listFiles({
owner,
repo,
pull_number
});
if (files.data.length === 1) {
const filename = files.data[0].filename;
core.exportVariable('API_FILE_LOCATION', filename);
console.log(`API_FILE_LOCATION: ${{ env.API_FILE_LOCATION }}`);
}
else {
console.log('The PR does not add exactly one specification file.');
}
- name: Azure login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Register to API Center
uses: azure/CLI@v2
with:
azcliversion: latest
inlineScript: |
az apic api register -g ${{ vars.RESOURCE_GROUP }} -n ${{ vars.SERVICE_NAME }} --api-location ${{ env.API_FILE_LOCATION }}
リポジトリに API 定義ファイルを追加する
リポジトリに API 定義ファイルを追加して、ワークフローをテストします。 次の大まかなステップに従います。これは開発ワークフローの一般的なステップです。 GitHub ブランチの操作の詳細については、GitHub のドキュメントを参照してください。
リポジトリのメイン ブランチから新しい作業ブランチを作成します。
APIs パスのリポジトリに API 定義ファイルを追加します。 たとえば、APIs/catfacts-api/07-15-2024.json のようにします。
変更をコミットし、作業ブランチにそれらをプッシュします。
pull request を作成して作業ブランチをメイン ブランチにマージします。
確認後、pull request をマージします。 マージによって、API Center に API を登録する GitHub Actions ワークフローがトリガーされます。