LifeTime API v2およびJenkinsを使用したコンテナの自動デプロイ
はじめに
以下のガイドでは、JenkinsなどのオートメーションサーバーとLifeTime Deployment APIを使用してコンテナへのOutSystemsアプリケーションのデプロイを自動化する方法について順を追って説明します。
このガイドに頻出する環境、アプリケーション、デプロイゾーン、デプロイ計画といった概念の詳細については、APIに関するオンラインヘルプをご覧ください。LifeTime APIへのリクエストを認証するには、(LifeTimeサービスアカウントの)認証トークンを生成する必要があります。詳細については、こちらをご覧ください。
前提条件
このガイドの手順を完了するには、以下の前提条件がインストール済みであることを確認してください。
前提条件 | このガイドで使用しているバージョン |
---|---|
Copy Artifact Plugin | 1.41 |
Environment Injector Plugin | 2.1.6 |
Extended Choice Parameter Plugin | 0.76 |
Jenkins Automation Server | 2.121.2 |
Parameterized Trigger Plugin | 2.35.2 |
PowerShell Plugin | 1.3 |
Windows PowerShell | 5.1 |
Jenkinsプラグインのインストールについては、Jenkinsのドキュメントをご覧ください。
自動化プロセスではPowerShellスクリプトとGroovyスクリプトを多用しますが、このガイドの手順を実行する際は、提供されたテンプレートスクリプトをコピーして貼り付けるだけでよいため、PowerShellとGroovyの知識は不要です。
構成手順
Jenkinsでフォルダを作成する
最初に、以下の手順を実行して、Jenkinsプロジェクトを保存する新しいJenkinsフォルダを作成します。
Jenkinsダッシュボードから[New Item]に移動し、[Folder]を選択して「OutSystems
」という名前を付けます。
[Folder]構成ページで、以下の構成値を指定します。
- Name: OutSystems
- DisplayName: OutSystems
- Description: Contains projects for automating the deployment of OutSystems applications.
環境、アプリケーション、デプロイゾーンのリストをLifeTimeから取得する
次に、最新の環境、アプリケーション、デプロイゾーンのデータをLifeTime環境から取得するJenkinsプロジェクトを作成します。
この情報には名前や一意のキーなどが含まれ、自動化したデプロイ計画の内容を指定するときに使用します。
作成したOutSystemsフォルダから[New Item]に移動し、[Freestyle project]を選択して「FetchLifeTimeData
」という名前を付けます。
[General]セクションで、以下の構成値を指定します。
- Description: Fetch the latest Environment, Deployment Zone and Application data in LifeTime for invoking the LifeTime API.
[Build Trigger]セクションで、[Build periodically]オプションにチェックを付け、cron構文(「every day, around midnight」など)を使用してスケジュール構成を入力します。
これにより、OutSystemsの環境、デプロイゾーン、アプリケーションに関する情報がJenkinsによって定期的に取得され、常に最新に保たれます。
[Build Environment]セクションで、[Inject environment variables to the build process]オプションにチェックを付け、以下のプロパティ定義をコピーして[Properties Content]フィールドに貼り付けます。
LifeTimeUrl=(LifeTime環境のURL)
AuthorizationToken=(LifeTimeサービスアカウントの認証トークン)
[Build]セクションで、[Add build step]を選択して[Windows PowerShell]オプションを選択します。次に、以下のPowerShellスクリプトの内容をコピーして[Command]フィールドに貼り付けます。
https://github.com/OutSystems/jenkins/blob/master/scripts-v2/powershell/FetchLifeTimeData.ps1
[Post-build Actions]セクションで、[Add post-build step]を選択して[Archive the artifacts]オプションを選択し、以下の構成値を入力します。
- Files to archive:
*.json
この手順は、これらの成果物を他のプロジェクトから取得できるようにするために必要です。
[Save]オプションをクリックすると、変更がプロジェクトに永続的に適用されます。
[Build Now]を押すと、このプロジェクトの新しいビルドがトリガーされます。
[Console Output]オプションを使用して、進行中のビルドの進捗状況を確認できます。このソースは、ビルドが失敗した場合に追加のトラブルシューティング情報を提供します。
このプロジェクトのビルドが成功するごとに、プロジェクトワークスペースに以下の成果物が作成されます。
成果物 | 説明 |
---|---|
applications.json | アプリケーション名と一意のキーのマッピングファイル |
environments.json | 環境名と一意のキーのマッピングファイル |
environment_deployment_zones.json | 各環境のデプロイゾーンの情報を含むファイル |
各環境内の各アプリケーションのデプロイゾーンを選択する
次に、各環境内のLifeTimeアプリケーションの配置場所となるデプロイゾーンを構成するJenkinsプロジェクトを作成します。
作成したOutSystemsフォルダから[New Item]に移動し、[Freestyle project]を選択して「SetApplicationDeploymentZones
」という名前を付けます。
[General]セクションで、以下の構成値を指定します。
- Description: Set the Deployment Zones for each Application across Environments
[General]セクションで、[This project is parameterized]オプションにチェックを付け、以下のビルドパラメータを構成します。
ビルドパラメータ | 構成値 |
---|---|
Application Deployment Zones | [Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。 - Name: application_deployment_zones - Description: Application Deployment Zones [JSON Parameter Type]オプションと[JSON Parameter Config Groovy Script]オプションを選択し、このスクリプトの内容をコピーしてテキスト領域に貼り付けます。 host タグとport タグを、Jenkinsサーバーを実行しているホストとポートに置き換えます。![]() |
[Build]セクションで、[Add build step]を選択して[Windows PowerShell]オプションを選択します。次に、以下のPowerShellスクリプトの内容をコピーして[Command]フィールドに貼り付けます。
https://github.com/OutSystems/jenkins/blob/master/scripts-v2/powershell/SetApplicationDeploymentZone.ps1
[Post-build Actions]セクションで、[Add post-build step]を選択して[Archive the artifacts]オプションを選択し、以下の構成値を入力します。
- Files to archive:
*.json
これ以降、このプロジェクトの新しいビルドをパラメータ付きでトリガーすることにより、各アプリケーションのデプロイゾーンを設定し、各環境で各アプリケーションが使用するデプロイゾーンを選択できます。アプリケーションがコンテナのデプロイゾーンにデプロイされるように設定できます。
[Console Output]オプションを使用して、進行中のビルドの進捗状況を確認できます。このソースは、ビルドが失敗した場合に追加のトラブルシューティング情報を提供します。
このプロジェクトのビルドが成功するごとに、プロジェクトワークスペースに以下の成果物が作成されます。
成果物 | 説明 |
---|---|
app_deployment_zones.json | 各環境でアプリケーションがデプロイされるデプロイゾーンを含むファイル |
最新のアプリケーションタグをターゲットLifeTime環境にデプロイする
最後に、Deployment APIを使用してソース環境からターゲット環境にLifeTimeアプリケーションのリストをデプロイするJenkinsプロジェクトを作成します。
実行するデプロイ計画の作成中に、デプロイする各アプリケーションの最新のタグが選択され、計画に追加されます。つまり、開発者がソース環境で(適切なバージョン番号とタグの記述を使用して)コードにタグ付けすると、Jenkinsがこのアプリケーションタグを自動的に検出し、人の手を介さずにターゲット環境にデプロイできます。
作成したOutSystemsフォルダから[New Item]に移動し、[Freestyle project]を選択して「DeployLatestTagsToTargetEnv
」という名前を付けます。
[General]セクションで、以下の構成値を指定します。
- Description: Deploy to target environment the latest tags of configured Applications.
[General]セクションで、[This project is parameterized]オプションにチェックを付け、以下のビルドパラメータを構成します。
ビルドパラメータ | 構成値 |
---|---|
Source Environment | [Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。 - Name: SourceEnvironment - Description: Source environment when creating the deployment plan.[Basic Parameter Types]オプションを選択した後、次のように指定します。 - Parameter Type: Single Select - Number of Visible Items: 5 [Choose Source for Value]セクションで、[Groovy Script]オプションを選択し、このスクリプトの内容をコピーしてテキスト領域に貼り付けます。 host タグとport タグを、Jenkinsサーバーを実行しているホストとポートに置き換えます。 ![]() |
Target Environment | [Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。 - Name: TargetEnvironment - Description: Target environment when creating the deployment plan. [Basic Parameter Types]オプションを選択した後、次のように指定します。 - Parameter Type: Single Select - Number of Visible Items: 5 [Choose Source for Value]セクションで、[Groovy Script]オプションを選択し、このスクリプトの内容をコピーしてテキスト領域に貼り付けます。 host タグとport タグを、Jenkinsサーバーを実行しているホストとポートに置き換えます。 ![]() |
Applications To Deploy | [Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。 - Name: ApplicationsToDeploy - Description: List of applications to include in the deployment plan.[Basic Parameter Types]オプションを選択した後、次のように指定します。 - Parameter Type: Check Boxes - Number of Visible Items: 15 [Choose Source for Value]セクションで、[Groovy Script]オプションを選択し、このスクリプトの内容をコピーしてテキスト領域に貼り付けます。 host タグとport タグを、Jenkinsサーバーを実行しているホストとポートに置き換えます。 ![]() |
[Build Environment]セクションで、[Inject environment variables to the build process]オプションにチェックを付け、以下のプロパティ定義をコピーして[Properties Content]フィールドに貼り付けます。
LifeTimeUrl=(LifeTime環境のURL)
AuthorizationToken=(LifeTimeサービスアカウントの認証トークン)
DeploymentTimeoutInSecs=300
SleepPeriodInSecs=20
[Build]セクションで、[Add build step]を選択して[Copy artifacts from another project]オプションを選択し、以下の構成値を入力します。
- Project name:
FetchLifeTimeData
- Which build:
Latest successful build
- Artifacts to copy:
*.json
引き続き[Build]セクションで、[Add build step]を再度選択して[Copy artifacts from another project]オプションを選択し、以下の構成値を入力します。
- Project name:
SetApplicationDeploymentZones
- Which build:
Latest successful build
- Artifacts to copy:
*.json
引き続き[Build]セクションで、[Add build step]を選択して[Windows PowerShell]オプションを選択します。次に、以下のPowerShellスクリプトの内容をコピーして[Command]フィールドに貼り付けます。
https://github.com/OutSystems/jenkins/blob/master/scripts-v2/powershell/DeployLatestTagsToTargetEnv.ps1
[Save]オプションをクリックすると、変更がプロジェクトに永続的に適用されます。
これ以降、このプロジェクトの新しいビルドをパラメータ付きでトリガーし、ソース環境とターゲット環境の値を指定して、デプロイするアプリケーションを選択することにより、OutSystemsのデプロイをJenkinsで自動実行できます。SetApplicationDeploymentZonesプロジェクトで選択したデプロイゾーンを使用して、選択したアプリケーションがターゲット環境にデプロイされます。
[Console Output]オプションを使用して、進行中のビルドの進捗状況を確認できます。このソースは、ビルドが失敗した場合に追加のトラブルシューティング情報を提供します。