Jenkinsを使用したOutSystemsの自動デプロイ
はじめに
以下のガイドでは、JenkinsなどのオートメーションサーバーとLifeTime Deployment APIを使用してOutSystemsのデプロイ計画の実行を自動化する方法について順を追って説明します。
このガイドに頻出する環境、アプリケーション、デプロイ計画といった概念の詳細については、APIに関するオンラインヘルプをご覧ください。Deployment APIへのリクエストを認証するには、(LifeTimeサービスアカウントの)認証トークンを生成する必要があります。詳細については、こちらをご覧ください。
前提条件
このガイドの手順を完了するには、以下の前提条件がインストール済みであることを確認してください。
前提条件 | このガイドで使用しているバージョン |
---|---|
Copy Artifact Plugin | 1.38.1 |
Environment Injector Plugin | 2.1.3 |
Extended Choice Parameter Plugin | 0.76 |
Jenkins Automation Server | 2.80 |
Parameterized Trigger Plugin | 2.35.2 |
PowerShell Plugin | 1.3 |
Windows PowerShell | 4.0 |
Jenkinsプラグインのインストールについては、Jenkinsのドキュメントをご覧ください。
自動化プロセスではPowerShellスクリプトを多用しますが、このガイドを実行する際は、提供されたテンプレートスクリプトをコピーして貼り付けるだけでよいため、PowerShellの知識は不要です。
構成手順
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]セクションで、以下の構成値を指定します。
- Name:
FetchLifeTimeData
- Description:
Fetch the latest Environment and Application data in LifeTime for invoking the Deployment 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/powershell/FetchLifeTimeData.ps1
[Post-build Actions]セクションで、[Add post-build step]を選択して[Archive the artifacts]オプションを選択し、以下の構成値を入力します。
- Files to archive:
*.mapping
この手順は、(次のセクションの説明に従って)これらの成果物を他のプロジェクトから取得できるようにするために必要です。
[Save]オプションをクリックすると、変更がプロジェクトに永続的に適用されます。
[Build Now]を押すと、このプロジェクトの新しいビルドがトリガーされます。
[Console Output]オプションを使用して、進行中のビルドの進捗状況を確認できます。このソースは、ビルドが失敗した場合に追加のトラブルシューティング情報を提供します。
このプロジェクトのビルドが成功するごとに、プロジェクトワークスペースに以下の成果物が作成されます。
成果物 | 説明 |
---|---|
LT.Environments.mapping | 環境名と一意のキーのマッピングファイル |
LT.Environments.properties | ビルドパラメータのソースデータとして使用するプロパティファイル |
LT.Applications.mapping | アプリケーション名と一意のキーのマッピングファイル |
LT.Applications.properties | ビルドパラメータのソースデータとして使用するプロパティファイル |
最新のアプリケーションタグをターゲットLifeTime環境にデプロイする
次に、Deployment APIを使用してソース環境からターゲット環境にLifeTimeアプリケーションのリストをデプロイするJenkinsプロジェクトを作成します。
実行するデプロイ計画の作成中に、デプロイする各アプリケーションの最新のタグが選択され、計画に追加されます。つまり、開発者がソース環境で(適切なバージョン番号とタグの記述を使用して)コードにタグ付けすると、Jenkinsがこのアプリケーションタグを自動的に検出し、人の手を介さずにターゲット環境にデプロイできます。
作成したOutSystemsフォルダから[New Item]に移動し、[Freestyle project]を選択して「DeployLatestTagsToTargetEnv
」という名前を付けます。
[General]セクションで、以下の構成値を指定します。
- Name:
DeployLatestTagsToTargetEnv
- Description:
Deploy to target environment the latest tags of configured Applications.
[General]セクションで、[This project is parameterized]オプションにチェックを付け、以下のビルドパラメータを構成します。
ビルドパラメータ | 構成値 |
---|---|
Source Environment | [Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。
[Choose Source for Value]セクションで、次のように指定します。
|
Target Environment |
[Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。
[Choose Source for Value]セクションで、次のように指定します。
|
Applications To Deploy |
[Add Parameter]を選択し、[Extended Choice Parameter]オプションを選択します。
[Choose Source for Value]セクションで、次のように指定します。
|
[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:
*.mapping
引き続き[Build]セクションで、[Add build step]を選択して[Windows PowerShell]オプションを選択します。次に、以下のPowerShellスクリプトの内容をコピーして[Command]フィールドに貼り付けます。
https://github.com/OutSystems/jenkins/blob/master/scripts/powershell/DeployLatestTagsToTargetEnv.ps1
[Save]オプションをクリックすると、変更がプロジェクトに永続的に適用されます。
これ以降、このプロジェクトの新しいビルドをパラメータ付きでトリガーし、ソース環境とターゲット環境の値を指定して、デプロイするアプリケーションを選択することにより、OutSystemsのデプロイをJenkinsで自動実行できます。
[Console Output]オプションを使用して、進行中のビルドの進捗状況を確認できます。このソースは、ビルドが失敗した場合に追加のトラブルシューティング情報を提供します。
アプリケーションを定期的に特定の環境にデプロイする
さらに、次に説明するように、特定のビルドパラメータとスケジュールを設定してDeployLatestTagsToTargetEnvプロジェクトをトリガーする別のJenkinsプロジェクトを構成することもできます。
作成したOutSystemsフォルダから[New Item]に移動し、[Freestyle project]を選択して(たとえば)「DeployIntranetApps
」という名前を付けます。
[General]セクションで、以下の構成値を指定します。
- Name:
DeployIntranetApps
- Description:
Deploy periodically the latest tags of Intranet apps (Directory, Cases and Timesheets) from DEV to QUA environments.
[Build Trigger]セクションで、[Build periodically]オプションにチェックを付け、cron構文(「every weekday, at 23h」など)を使用してスケジュール構成を入力します。
[Build]セクションで、[Add build step]を選択して[Trigger/call builds on other projects]オプションを選択し、以下の構成値を入力します。
- Project to build:
DeployLatestTagsToTargetEnv
- [Block until the triggered projects finish their builds]オプションにチェックを付けます。
- [Add Parameter]を選択し、[Predefined parameters]オプションを選択します。
- [Parameters]フィールドに以下のプロパティ定義を入力します。
SourceEnvironment=<ソース環境名>
TargetEnvironment=<ターゲット環境名>
ApplicationsToDeploy=<デプロイするアプリケーション名(csv)>
[Save]オプションをクリックすると、変更がプロジェクトに永続的に適用されます。
この方法は、必要なビルドパラメータの数に応じて繰り返し行うことができます。