Skip to main content

 

参考情報

 

OutSystems

LifeTime Deployment APIの例

複数のAPI呼び出しを使用して以下のような一般的なタスクを実行する実際のシナリオについて説明します。

  • アプリケーションバージョンを作成する。
  • アプリケーションをデプロイする。

新しいアプリケーションバージョンを作成する

この例では、API呼び出しを使用して以下の一般的な手順を実行します。

  1. アプリケーションバージョンを作成する環境の環境キーを取得します_(この情報がすでにある場合は省略可能)_。

  2. 目的のアプリケーションのアプリケーションキーを取得します_(この情報がすでにある場合は省略可能)_。

  3. 各アプリケーションモジュールのモジュールバージョンキーを取得します。

  4. 前の手順で取得したモジュールバージョン情報を使用して、新しいアプリケーションバージョンを作成します。

示されている各手順のAPI呼び出し(リクエストおよびレスポンス)の例については、以下をご覧ください。

1. 環境キーを取得する

最初に、インフラの利用可能なすべての環境を返すAPIメソッドを呼び出します(環境キーがまだ不明な場合にのみ必要)。

リクエスト: GET /lifetimeapi/rest/v2/environments/

レスポンスボディ:

[
  {
    "Key":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
    "Name":"Development",
    "OSVersion":"11.0.110.0",
    "Order":0,
    "HostName":"dev-env.company.com",
    "UseHTTPS": true,
    "EnvironmentType":"Development",
    "NumberOfFrontEnds":1,
    "ApplicationServerType":".NET",
    "ApplicationServer":"IIS",
    "DatabaseProvider":"SQLServer",
    "IsCloudEnvironment": false
  },
  {
    "Key":"849515f2-b4ff-4aca-a9d6-9407bea655f4",
    "Name":"Production",
    "OSVersion":"11.0.110.0",
    "Order":1,
    "HostName":"prd-env-1.company.com",
    "UseHTTPS": true,
    "EnvironmentType":"Production",
    "NumberOfFrontEnds":1,
    "ApplicationServerType":".NET",
    "ApplicationServer":"IIS",
    "DatabaseProvider":"SQLServer",
    "IsCloudEnvironment": false
  }
]

「Development」タイプの環境(偶然、環境の名前も「Development」です)でアプリケーションバージョンを作成するため、そのキーをメモに取って次のAPI呼び出しで使用できるようにします。

環境キー: f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e

2. アプリケーションキーを取得する

次に、インフラの利用可能なすべてのアプリケーションを返すAPIメソッドを呼び出して、アプリケーションキーを取得します(アプリケーションキーがまだ不明な場合にのみ必要)。

リクエスト: GET /lifetimeapi/rest/v2/applications/

レスポンスボディ:

[
  {...},
  {
    "Key":"c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
    "Name":"EmployeeBackoffice",
    "Kind":"WebResponsive",
    "Team":"",
    "Description":"",
    "URLPath":"/EmployeeBackoffice",
    "IconHash":"IconHash6a79e71e-c8e5-9e18-115c-cab789517672",
    "IconURL":"/LifeTimeSDK/ApplicationIcon.aspx?ApplicationKey=c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
    "IsSystem": false,
    "AppStatusInEnvs":[]
  },
  {...}
]

「EmployeeBackoffice」アプリケーションのアプリケーションバージョンを作成します。そのキーをメモに取って次のAPI呼び出しで使用できるようにします。

「EmployeeBackoffice」のアプリケーションキー: c9a7a82e-0eee-4a3d-8e22-2a19c69c766f

3. 各アプリケーションモジュールのモジュールバージョンキーを取得する

最初に、APIメソッドの「テンプレート」URLを使用して、指定された環境のアプリケーションの詳細を取得します。

GET /lifetimeapi/rest/v2/environments/{EnvironmentKey}/applications/{ApplicationKey}/

次に、{EnvironmentKey}{ApplicationKey}の各プレースホルダを適切な値に変更して、以下のリクエストを実行します。

リクエスト: GET /lifetimeapi/rest/v2/environments/f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e/applications/c9a7a82e-0eee-4a3d-8e22-2a19c69c766f/?IncludeEnvStatus=true&IncludeModules=true

注記: 必要なモジュールバージョンキーの情報を取得するには、追加のフラグ(IncludeEnvStatusIncludeModules)が必要です。

レスポンスボディ:

{
  "Key":"c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
  "Name":"EmployeeBackoffice",
  "Kind":"WebResponsive",
  "Team":"",
  "Description":"",
  "URLPath":"/EmployeeBackoffice",
  "IconHash":"IconHash6a79e71e-c8e5-9e18-115c-cab789517672",
  "IconURL":"/LifeTimeSDK/ApplicationIcon.aspx?ApplicationKey=c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
  "IsSystem": false,
  "AppStatusInEnvs":[
    {
      "EnvironmentKey":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
      "BaseApplicationVersionKey":"e9eedcbd-fe87-4ccf-a9c3-f7225ddcb8ff",
      "IsModified": true,
      "IsModifiedReason":"Module_Modified",
      "IsModifiedMessage":"At least one module was modified since the version 0.1",
      "ConsistencyStatus":"",
      "ConsistencyStatusMessages":"",
      "MobileAppsStatus":[],
      "ModuleStatusInEnvs":[
        {
          "ApplicationKey":"c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
          "EnvironmentKey":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
          "ModuleVersionKey":"bc354abb-6691-41ee-9ed3-9454747e2d4d",
          "ConsistencyStatus":"",
          "ConsistencyStatusMessages":""
        }
      ],
      "DeploymentZoneKey":""
    }
  ]
}

「EmployeeBackoffice」アプリケーションのモジュールは1つのみです。「ModuleStatusInEnvs」リストに含まれるそのバージョンキーをメモに取ります。

モジュールバージョンキー: bc354abb-6691-41ee-9ed3-9454747e2d4d

注記: アプリケーションにモジュールが複数ある場合は、それぞれのバージョンキーをすべてメモに取る必要があります。

4. 新しいアプリケーションバージョンを作成する

APIメソッドの「テンプレート」URLから開始して、新しいアプリケーションバージョンを作成します。

POST /lifetimeapi/rest/v2/environments/{EnvironmentKey}/applications/{ApplicationKey}/versions/

{EnvironmentKey}{ApplicationKey}の各プレースホルダを適切な値に変更して、リクエストの完全なURLを定義します。

リクエスト: POST lifetimeapi/rest/v2/environments/f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e/applications/c9a7a82e-0eee-4a3d-8e22-2a19c69c766f/versions/

POSTリクエストボディに以下のテキストを挿入します(手順3で取得したモジュールバージョンキーを使用します)。

{
  "ChangeLog":"Go live 1.0",
  "Version":"1.0",
  "MobileVersions":[],
  "ModuleVersionKeys":[
    "bc354abb-6691-41ee-9ed3-9454747e2d4d"
  ]
}

オペレーションが成功した場合は、レスポンスの「ApplicationVersionKey」要素に作成されたアプリケーションバージョンのキーが含まれます。

レスポンスボディ:

{
  "ApplicationVersionKey":"b3d2ef6b-e5c5-4c7e-851e-0547f7bd634c"
}

アプリケーションをデプロイする

この例では、API呼び出しを使用して以下の一般的な手順を実行します。

  1. ソース環境とターゲット環境の環境キーを取得します_(この情報がすでにある場合は省略可能)_。

  2. 目的のアプリケーションのベースアプリケーションバージョンキーを取得します_(この情報がすでにある場合は省略可能)_。

  3. 新しいデプロイを作成します。

  4. 作成されたデプロイの詳細を取得して、アプリケーションのデプロイによって発生する衝突を確認します。

  5. 作成されたデプロイを開始します。

  6. 実行が完了してデプロイステータスが最終的なもの(つまり、「needs_user_intervention」、「aborted」、「finished_successful」、「finished_with_warnings」、「finished_with_errors」のいずれか)になるまで、デプロイの実行ステータスを取得します。

示されている各手順のAPI呼び出し(リクエストおよびレスポンス)の例については、以下をご覧ください。

1. ソース環境とターゲット環境のキーを取得する

最初に、インフラの利用可能なすべての環境を返すAPIメソッドを呼び出して、ソース環境とターゲット環境のキーを特定します(この情報がまだない場合にのみ必要)。

リクエスト: GET /lifetimeapi/rest/v2/environments/

レスポンスボディ:

[
    {
        "Key":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
        "Name":"Development",
        "OSVersion":"11.0.110.0",
        "Order":0,
        "HostName":"dev-env.company.com",
        "UseHTTPS": true,
        "EnvironmentType":"Development",
        "NumberOfFrontEnds":1,
        "ApplicationServerType":".NET",
        "ApplicationServer":"IIS",
        "DatabaseProvider":"SQLServer",
        "IsCloudEnvironment": false
    },
    {
        "Key":"849515f2-b4ff-4aca-a9d6-9407bea655f4",
        "Name":"Production",
        "OSVersion":"11.0.110.0",
        "Order":1,
        "HostName":"prd-env-1.company.com",
        "UseHTTPS": true,
        "EnvironmentType":"Production",
        "NumberOfFrontEnds":1,
        "ApplicationServerType":".NET",
        "ApplicationServer":"IIS",
        "DatabaseProvider":"SQLServer",
        "IsCloudEnvironment": false
    }
]

Development環境とProduction環境の環境キーをメモに取って次のAPI呼び出しで使用できるようにします。

Development環境キー: f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e
Production環境キー: 849515f2-b4ff-4aca-a9d6-9407bea655f4

2. ベースアプリケーションバージョンキーを取得する

次に、インフラの利用可能なすべてのアプリケーションを返すAPIメソッドを呼び出して、目的のベースアプリケーションバージョンキーを確認します。

リクエスト: GET /lifetimeapi/rest/v2/applications/

レスポンスボディ:

[
  {...},
  {
    "Key":"c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
    "Name":"EmployeeBackoffice",
    "Kind":"WebResponsive",
    "Team":"",
    "Description":"",
    "URLPath":"/EmployeeBackoffice",
    "IconHash":"IconHash6a79e71e-c8e5-9e18-115c-cab789517672",
    "IconURL":"/LifeTimeSDK/ApplicationIcon.aspx?ApplicationKey=c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
    "IsSystem": false,
    "AppStatusInEnvs":[ 
      {
        "EnvironmentKey":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
        "BaseApplicationVersionKey":"b3d2ef6b-e5c5-4c7e-851e-0547f7bd634c",
        "IsModified": true,
        "IsModifiedReason":"Module_Modified",
        "IsModifiedMessage":"At least one module was modified since the version 0.1",
        "ConsistencyStatus":"",
        "ConsistencyStatusMessages":"",
        "MobileAppsStatus":[],
        "ModuleStatusInEnvs":[
          {
            "ApplicationKey":"c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
            "EnvironmentKey":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
            "ModuleVersionKey":"bc354abb-6691-41ee-9ed3-9454747e2d4d",
            "ConsistencyStatus":"",
            "ConsistencyStatusMessages":""
          }
        ],
        "DeploymentZoneKey":""
      } 
    ]
  },
  {...}
]

「Development」環境(つまり、キーが「f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e」の環境)の「EmployeeBackoffice」のベースアプリケーションバージョンキーをメモに取ります。

ベースアプリケーションバージョンキー: b3d2ef6b-e5c5-4c7e-851e-0547f7bd634c

3. デプロイを作成する

APIメソッドを呼び出して新しいデプロイの作成を進めます。ソース環境とターゲット環境のキーと、デプロイするアプリケーションのアプリケーションバージョンキーを指定する必要があります。

リクエスト: POST /lifetimeapi/rest/v2/deployments/

リクエストボディ:

{
  "Notes":"Deployment Created via postman by Operator1",
  "SourceEnvironmentKey":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
  "TargetEnvironmentKey":"849515f2-b4ff-4aca-a9d6-9407bea655f4",
  "ApplicationOperations":[
    {
      "ApplicationVersionKey":"b3d2ef6b-e5c5-4c7e-851e-0547f7bd634c",
      "DeploymentZoneKey":""
    }
  ]
}

オペレーションが成功した場合は、レスポンスボディに新しいデプロイのデプロイキーが含まれます。

レスポンスボディ:

dce64ad4-2ddf-4e54-a639-3524bcd5b9a1

4. デプロイの詳細を取得して衝突を確認する

次に、APIメソッドを呼び出して作成されたデプロイの詳細を取得し、OutSystemsで衝突が検出されたかどうかを確認します。

GET /lifetimeapi/rest/v2/deployments/{DeploymentKey}/

{DeploymentKey}プレースホルダを適切なキーに置き換えると、以下の最終URLが得られます。

リクエスト: GET /lifetimeapi/rest/v2/deployments/dce64ad4-2ddf-4e54-a639-3524bcd5b9a1/

レスポンスボディ:

{
  "Deployment":{
    "Key":"dce64ad4-2ddf-4e54-a639-3524bcd5b9a1",
    "SourceEnvironmentKey":"f3582e43-43c7-4bb4-8cbb-d9f6cbcbd35e",
    "TargetEnvironmentKey":"849515f2-b4ff-4aca-a9d6-9407bea655f4",
    "Notes":"Deployment Created via postman by Operator1",
    "CreatedOn":"2018-10-10T15:02:09Z",
    "CreatedBy":"John Doe",
    "CreatedByUsername":"sa_op1",
    "SavedOn":"2018-10-10T15:02:10.853Z",
    "SavedBy":"John Doe",
    "SavedByUsername":"sa_op1",
    "StartedOn":"1900-01-01T00:00:00",
    "StartedBy":"",
    "StartedByUsername":"",
    "AbortedOn":"1900-01-01T00:00:00",
    "AbortedBy":"",
    "AbortedByUsername":"",
    "ApplicationOperations":[
      {
        "ApplicationKey":"c9a7a82e-0eee-4a3d-8e22-2a19c69c766f",
        "ApplicationVersionKey":"b3d2ef6b-e5c5-4c7e-851e-0547f7bd634c",
        "DeploymentOperation":"Deploy 1.0",
        "DeploymentZoneKey":""
      }
    ]
  },
  "ApplicationsToRedeploy":[],
  "ApplicationConflicts":[]
}

ApplicationConflicts要素は空です。これは衝突が検出されなかっとことを意味します。

5. 作成されたデプロイを開始する

これで、「start」コマンドで以下のAPIメソッドを呼び出してデプロイの実行を開始できます。

POST /lifetimeapi/rest/v2/deployments/{DeploymentKey}/{Command}/

上記のテンプレートをこの例に合わせて調整します。

リクエスト: POST /lifetimeapi/rest/v2/deployments/dce64ad4-2ddf-4e54-a639-3524bcd5b9a1/start/

「start」コマンドが成功した場合、OutSystemsは202 AcceptedのHTTPステータスコードと空のレスポンスボディを返します。

6. デプロイ実行ステータスを確認する

この時点で、以下のAPIメソッドを使用して前に発行した「start」コマンドの実行ステータスを確認します。

GET /lifetimeapi/rest/v2/deployments/{DeploymentKey}/status/

上記のテンプレートをこの例に合わせて調整します。

GET /lifetimeapi/rest/v2/deployments/dce64ad4-2ddf-4e54-a639-3524bcd5b9a1/status/

レスポンスボディ:

{
    "DeploymentStatus":"finished_successful",
    "Info":"",
    "DeploymentLog":[
        {
            "Instant":"2018-10-10T15:36:11.797Z",
            "Message":"Uploading modules from Development to Production"
        },
        {
            "Instant":"2018-10-10T15:36:14.887Z",
            "Message":"Uploading 'EmployeeBackoffice' from Development to Production"
        },
        {
            "Instant":"2018-10-10T15:36:18.337Z",
            "Message":"Applying Deployment Zones configurations in Production Envrionment"
        },
        {
            "Instant":"2018-10-10T15:36:21.433Z",
            "Message":"Creating solution pack in Production"
        },
        {...}
        {
            "Instant":"2018-10-10T15:36:38.26Z",
            "Message":"Deploying modules of 'Development_to_Production'."
        },
        {
            "Instant":"2018-10-10T15:36:38.263Z",
            "Message":"Creating tables and altering columns of module 'EmployeeBackoffice'"
        },
        {
            "Instant":"2018-10-10T15:36:38.263Z",
            "Message":"Creating unique indexes of module 'EmployeeBackoffice'"
        },
        {
            "Instant":"2018-10-10T15:36:38.263Z",
            "Message":"Updating static entity records of module 'EmployeeBackoffice'"
        },
        {
            "Instant":"2018-10-10T15:36:38.267Z",
            "Message":"Updating system entities of module 'EmployeeBackoffice'"
        },
        {
            "Instant":"2018-10-10T15:36:38.267Z",
            "Message":"Deploying module 'EmployeeBackoffice'."
        },
        {
            "Instant":"2018-10-10T15:36:38.267Z",
            "Message":"Updating status of module 'EmployeeBackoffice'."
        },
        {
            "Instant":"2018-10-10T15:36:43.833Z",
            "Message":"Synchronizing data with 'Production' environment."
        },
        {
            "Instant":"2018-10-10T15:37:14.877Z",
            "Message":"Updating application versions for 'Production' environment."
        },
        {
            "Instant":"2018-10-10T15:37:18.08Z",
            "Message":"Deploy completed"
        }
    ]
}

デプロイステータスが「finished_successful」であるため、アプリケーションのデプロイが正常に完了したことがわかります。

レスポンスで「running」などの中間のデプロイステータスを取得した場合は、実行が最終的なデプロイステータス(成功または不成功のステータス)に達するまでデプロイ実行のステータスのポーリングを続ける(つまり、APIメソッドの呼び出しを繰り返す)必要があります。

  • Was this article helpful?