Heroku パイプラインの検査 (アドオンパートナー向け)
最終更新日 2024年02月06日(火)
Table of Contents
開発者は Heroku パイプラインを使用して、Heroku アプリのコレクションを指定し、単一のコードベースのさまざまなデプロイステージを表すことができます。パイプライン内のすべてのアプリは、次のデプロイステージのいずれかを表します。
- 開発
- レビュー
- ステージング
- 本番
アドオンパートナーは、パートナー向け Platform API を使用してアプリのパイプライン情報の一部にアクセスできます。この情報の一般的なユースケースには、次のものがあります。
顧客向けの統合ダッシュボードを作成するときに、同じパイプライン内のさまざまなアプリに対応するコンテンツを視覚的にグループ化できます。
開発者パイプラインの詳細をアドオンのメトリクスで追跡し、開発者によるアドオンの使用状況をさらに詳しく把握できます。
前提条件
パイプライン情報の検査には、パートナー向け Platform API へのアクセスが必要です。アドオンでまだ使用していない場合は、まず「パートナー向け Platform API」を参照してください。
加えて、プロビジョニング中にこの情報を使用する場合は、非同期プロビジョニングを利用する必要があります。利用しないと、元のリクエストから 30 秒以内というタイムアウトに抵触するリスクがあります。
プロビジョニングするアプリの ID
の取得
アプリのパイプラインの詳細を取得するには、まず、アドオンをプロビジョニングしたアプリの id
を取得する必要があります。
開発者がアドオンをプロビジョニングすると、アドオンは /heroku/resources
で POST
リクエストを受信し、JSON 本体は次のようになります。
{
"heroku_id": "app1234@heroku.com",
"plan": "basic",
"region": "amazon-web-services::us-east-1",
"callback_url": "https://api.heroku.com/vendor/apps/app1234@heroku.com",
"options": {},
"uuid": "01234567-89ab-cdef-0123-456789abcdef"
}
含まれている uuid
フィールドの値を、アドオン情報エンドポイントへの GET
リクエストで指定します。
GET /addons/{resource-uuid}
Content-Type: application/json
Accept: application/vnd.heroku+json; version=3
Authorization: Bearer {access-token}
エンドポイントは次のような JSON 本体で応答します。
{
"actions": {
"id": "01234567-89ab-cdef-0123-456789abcdef",
"label": "Example",
"action": "example",
"url": "http://example.com?resource_id=:resource_id",
"requires_owner": true
},
"addon_service": {
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "heroku-postgresql"
},
"app": {
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "example"
},
"config_vars": [
"FOO",
"BAZ"
],
"created_at": "2012-01-01T12:00:00Z",
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "acme-inc-primary-database",
"plan": {
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "heroku-postgresql:dev"
},
"provider_id": "abcd1234",
"state": "provisioned",
"updated_at": "2012-01-01T12:00:00Z",
"web_url": "https://postgres.heroku.com/databases/01234567-89ab-cdef-0123-456789abcdef"
}
応答本体の app
オブジェクトには、アドオンをプロビジョニングしたアプリの一意な id
が含まれます。この id
を使用して、アプリに関連付けられたパイプラインの詳細を検索できます。
ほとんどのパイプライン詳細の取得
プライマリアプリの id
を取得したら、パイプライン結合情報エンドポイントへのリクエストで指定して、関連付けられたパイプラインの id
を取得します。
GET /apps/{app-id}/pipeline-couplings
Content-Type: application/json
Accept: application/vnd.heroku+json; version=3
Authorization: Bearer {token}
エンドポイントは次のような JSON 本体で応答します。
[
{
"app": {
"id": "01234567-89ab-cdef-0123-456789abcdef"
},
"created_at": "2012-01-01T12:00:00Z",
"id": "01234567-89ab-cdef-0123-456789abcdef",
"pipeline": {
"id": "01234567-89ab-cdef-0123-456789abcdef"
},
"stage": "production",
"updated_at": "2012-01-01T12:00:00Z"
}
]
返された pipeline
オブジェクトの id
フィールドは、パイプラインを一意に識別します。stage
フィールドは、このアプリが対応しているデプロイステージを示します。
このエンドポイントは、他のエンドポイントとの整合性のために配列を返しますが、アプリは 1 つのパイプラインのメンバーにしかなれません (したがって、配列に含まれる項目は最大でも 1 つです)。
パイプラインの名前の取得
前の手順で取得した id
を使用して、パイプラインの名前を検索できます。
GET /pipelines/{pipeline-uuid}
Content-Type: application/json
Accept: application/vnd.heroku+json; version=3
Authorization: Bearer {token}
{
"created_at": "2012-01-01T12:00:00Z",
"id": "01234567-89ab-cdef-0123-456789abcdef",
"name": "example",
"updated_at": "2012-01-01T12:00:00Z"
}
まとめ
リソースに関連付けられたアプリについて、パイプラインとステージの情報を収集することで、顧客であればユーザーエクスペリエンスを、パートナーであればメトリクスを改善する機会が得られます。ご質問やご意見がございましたら、サポートチケットを開いてください。