3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SAPUI5】SAP Continuous Integration and Deliveryを使ってみる

Last updated at Posted at 2021-02-06

##1. はじめに
この記事では、SAP Continuous Integration and DeliveryというSAP Business Technology Platform(BTP)のサービスを使って、SAPUI5アプリのCI/CDパイプラインを構築してみたいと思います。

SAPが提供するCI/CDに関するツール、ガイドには以下の3種類があります。右上にいくほど適用の難易度が上がるとともに、自由度も上がります。このうち、CI/CD service(SAP Continuous Integration and Delivery)はBTPでの設定だけでパイプラインが作成できるため、最も手軽にCI/CDを始めることができます。

image.png
DevOps with SAP: Holistic Overview and Latest News [DEV100]より引用

##2. SAP Continuous Integration and Deliveryとは
SAP Continuous Integration and DeliveryはBTPのCloud Foundry環境で提供されるサービスで、Cloud Foundryにデプロイするアプリケーション向けのパイプラインを作成することができます。以下で説明する3種類のパイプラインのテンプレートが用意されています。テンプレートを使用して簡単にパイプラインを作成できる一方、目的に合ったテンプレートがない場合は使えないので自由度はそれほど高くないということになります。

###2.1. サポートされているパイプライン
3つのパイプラインがサポートされています。今回はSAP Fiori in the Cloud Foundry environmentを使います。

  • SAP Cloud Application Programming Model: CAP用(Cloud Foundry環境)
  • SAP Fiori in the Cloud Foundry environment: SAP Fiori用(Cloud Foundry環境)
  • SAP Fiori in the Neo environment: SAP Fiori用(Neo環境)

###2.2. SAP Fiori in the Cloud Foundry environmentのジョブ設定方法
ジョブの設定方法は2通りあります。
①Job Editorで設定
②ソースレポジトリのconfig.ymlファイルで設定

①は設定画面から入力する方式で、②はプロジェクトの中に設定ファイルを置く方法です。どちらも設定できる内容は同じなので、今回は①の方法で行います。

####ジョブの設定内容
SAP Fiori in the Cloud Foundry environmentのジョブは5つのステージで構成されており、各ステージを実行するかどうかをState(ON/OFF)で指定します。なお、Buildステップは必ず実行されます。

ステージ パラメータ 設定値
Build Application Name(任意) アプリケーション名。指定しない場合はデフォルトの"ui5application"が使われる。※ここで指定した名前よりもmta.yamlで指定したapplication nameが優先される
Test State ONにした場合、テストステージが実行される。テストを実行するためにはFioriプロジェクト側にテスト用の設定が必要
Malware Scan State ONにした場合、Malware Scanが実行される
Deploy State ONにした場合、Cloud Foundryへのデプロイが行われる。以下のパラメータの設定が必要
API Endpoint Cloud FoundryのAPIエンドポイントを指定(例:https://api.cf.eu10.hana.ondemand.com)
Org Name Cloud FoundryのOrg Nameを指定(サブアカウントのOverviewで確認できる)
Space デプロイ先のSpaceを指定
Credentials Cloud FoundryにログインするためCredentials(自分のユーザ、パスワードのセット)を作成しておき、それを指定する
Upload to Transport Management Service State ONにした場合、Buildの結果をTransport Management Serviceにアップロードする。以下のパラメータの設定が必要
Node Name アップロード先のTransport Managementのノード名を指定
Service Key Transport Management用のCredentials(サービスキー)を作成しておき、それを指定する

##3. やってみた内容
今回は、シンプルにSAP Fioriのパイプラインを実行することを目的とします。
実行するステップは①Build、②Test、③Malware Scan、④Deployです。
Transport Management Serviceへのアップロードについては、kanamen10さんの以下の記事で説明されています。
誰かSAP CP界隈の購買事情をなんとかしてくれ。

<ステップ>
1. 初期設定
2. Credentialsを作成
3. Fioriアプリを作成してGitHubにPush
4. リポジトリと接続
5. ジョブを作成して実行
6. Webhookの設定

###1. 初期設定
####1.1. サービスの有効化
サブアカウントのSubscriptionsから、Continuous Integration & Deliveryをサブスクライブします。
image.png

####1.2. ロールの割り当て
Trust Configurationより、CICD Service Administratorのロールコレクションを自分に割り当てます。
(ロールの種類についてはこちらを参照)
image.png
image.png

####1.3. サービスを実行
Go to Applicationのリンクからサービスを実行します。
image.png

###2. Credentialsを作成
Cloud Foundryにログインするための認証情報を作成します。Credentialsのタブで+ボタンを押して新規作成します。
image.png
image.png

###3. Fioriアプリを作成してGitにPush
####3.1. Fioriアプリを作成
以下のチュートリアルのステップ4(Buildの手前)まで実行します。
Deploy Your First SAPUI5 App to Cloud Foundry

この結果、Build、Test、Deployに必要な設定がすでに入った状態のアプリが完成します。参考までに、CI/CDがどの設定を見て動いているのかについて説明します。

①Test
Testステージでは、UI5アプリのフォルダのpackage.jsonで指定されたtestスクリプトが実行されます。ここではKarmaというプラグインを使ってテストを実行するように設定されています。
image.png
Karmaはkarma.conf.jsというファイルを見に行き、テストに必要な設定を取得します。frameworksにui5が設定されているので、karma-ui5というUI5に特化したプラグインが使用されます。
image.png
karma-ui5は、特に指定がなければtestsuite.qunit.htmlというファイルをテストページとして実行します
image.png
testsuite.qunit.htmlから参照されているtestsuite.qunit.jsファイルの中で、unit/unitTests.qunit.htmlとintegration/opaTests.qunit.htmlをテストページとして追加しています。これにより、unitフォルダ配下のQUnitテストと、integrationフォルダ配下のOPA5テストが実行されます。
Qunit、OPA5について詳しくはこちらをご参照ください。
image.png

テンプレートを使わず作成したプロジェクトなどで一からテストの設定が必要な場合は、以下のページのConfigure the Test Stageのセクションを参考にしてください。
Configure an SAP Fiori in the Cloud Foundry Environment Job with the Job Editor

②Build
Buildステージではプロジェクトのルートを指定してmbt buildコマンドが実行されます。このために必要なのはプロジェクトのルートにあるmta.yamlです。ここに、このプロジェクトに必要なモジュールやビルド時のパラメータ、使用するリソースなどが記載されています。mbt buildを実行すると各モジュールがビルドされ、Cloud Foundryにデプロイ可能なmtarファイルが作成されます。
image.png

③Deploy
DeployステージではBuildの結果できたmtarファイルをCloud Foundryにアップロードします。デプロイの前にDeployステージで指定したCredentialsを使ってCloud Foundryのスペースにログインが行われます。

####3.2. ローカルでテスト
ローカルでCI/CDで実行されるのと同じテストを実行してみます。ターミナルを開き、UI5アプリのフォルダに移動してテストを実行します。

cd <UI5アプリのフォルダ名>
npm test

ターミナルにテストの結果が表示されます。
image.png

テストの結果、coverageというフォルダが作られます。このなかのindex.htmlファイルを右クリックし、Open with>Previewを選択すると、テストのカバレージが表示されます。
image.png

####3.3. GitHubにPush
作成したプロジェクトをGitHubに上げます。
image.png

###4. リポジトリと接続
Repositoriesのタブで+ボタンを押して新規作成します。
image.png
Name, Clone URL(GitリポジトリのURL)を入力してAddをクリックします。
image.png
image.png

###5. ジョブを作成して実行
####5.1. ジョブを作成
Jobsのタブで+ボタンを押して新規作成します。
image.png
以下の内容を設定し、保存します。下記以外はデフォルトのままとしています。
image.png

項目 設定値
Job Name 任意の名前
Repository ステップ4で作成したリポジトリを選択
Branch master(対象とするブランチを指定)
Pipeline SAP Fiori in the Cloud Foundry environment
Test ON
Deploy ON(Org Name, Space, Credentialsも設定)
Upload to Cloud Transport Management OFF

####5.2. 実行
▷ボタンを押して実行します。
image.png
image.png
すべてのステージが正常終了しました。
image.png
※途中のステージでエラーになった場合は、後続のステージは実行されません。
image.png

####5.3. デプロイされたアプリケーションを確認
アプリケーションがデプロイされ、起動しています。
image.png
中に入ってApplication RouteのURLをクリックします。
image.png
UI5アプリケーションが起動しました。
image.png

###6. Webhookの設定
Webhookを使うと、GitリポジトリにPushしたタイミングでCI/CDに連携され、自動的にジョブが起動します。
image.png

####6.1. Webhookの呼び出し情報を確認
Gitリポジトリから呼び出すWebhookのURLは、RepositoriesのWebhook Dataから確認できます。
image.png
image.png

####6.2. Webhook連携の設定
GitリポジトリのSettingsタブから、新しいWebhookを追加します。
image.png
以下の項目を設定し、Add webhookをクリックします。

項目 設定値
Payload URL 6.1.で確認したPayload URL
Content type 6.1.で確認したContent type
Secret 6.1.で確認したSecret
image.png

####6.3. アプリケーションを変更してPush
アプリケーションに少し変更を加えてGitにPushします。すると、すぐにJobが開始します。
image.png

##4. おわりに
以前Jenkinsを使って一からパイプラインを構築した際は、トライアル&エラーで大変苦労したのですが、今回は一発でうまくいきました。テンプレートさえ合えば、CD/CDを始めるハードルとしてはこの上なく低いといえそうです。
一方で、例えば「FioriアプリをABAPサーバにデプロイしたい」など他の要求が出てきたときには、現状だと複数のツールを使いわけることになります。今後テンプレートの種類が拡充されていくことに期待したいです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?