このトピックでは、Enterprise Distributed Application Service (EDAS) にデプロイされたアプリケーションの継続的インテグレーション (CI) ソリューションを構築する方法について説明します。 CI ソリューションでは、次のコンピューター言語と開発ツールが使用されます。これらの言語とツールに精通している必要があります。
前提条件
CI を実装する前に、次の準備を完了する必要があります。
AccessKey ID と AccessKey Secret を取得します。 AccessKey ID と AccessKey Secret を取得するには、次の手順を実行します。
EDAS のアクティベーションに使用する [alibaba Cloud アカウント] を使用して、Alibaba Cloud の公式 Web サイトにログオンします。
EDAS コンソールでアプリケーションを作成およびデプロイします。 EDAS コンソールでアプリケーションを作成およびデプロイするには、次の手順を実行します。
[EDAS コンソール] にログオンします。
アプリケーションを作成してデプロイします。 詳細については、「概要」および「概要」をご参照ください。
アプリケーションをすでに作成している場合は、この手順をスキップします。
左側のナビゲーションペインで、[アプリケーション] をクリックします。前の手順で作成したアプリケーションの名前をクリックします。 [基本情報] タブで、アプリケーション ID を取得します。
コードは GitLab でホストされています。 GitLab パッケージをビルドするか、[Alibaba Cloud Code] を使用できます。
このトピックでは、自己管理型の GitLab パッケージを使用例として使用します。 詳細については、[GitLab] にアクセスしてください。
Jenkins に精通している必要があります。 詳細については、[Jenkins] にアクセスしてください。
背景情報
Jenkins を使用して、Elastic Compute Service (ECS) クラスタと Kubernetes クラスタにデプロイされているアプリケーションで CI を実装できます。
ツール | 説明 |
Maven | [Maven] は、プロジェクトの自動ビルドと管理に使用される自動化ツールです。 |
Jenkins | [Jenkins] は、CI を容易にするスケーラブルな自動化サーバーです。 |
GitLab | [GitLab] は、Web ページでプライベートまたはパブリックリポジトリにアクセスできる、オープンソースの自己ホスト型ソフトウェア開発プラットフォームです。 GitLab は Ruby on Rails を使用して構築されています。 GitHub と同様に、GitLab ではコードのレビュー、不具合の管理、コメントの追加を行うことができます。 |
プロジェクトの設定
プロジェクトと toolkit-maven-plugin プラグインを設定し、プラグインのデプロイ情報を指定します。 詳細については、「toolkit-maven-plugin プラグインを使用して ECS クラスタにデプロイされたアプリケーションを更新する」をご参照ください。 プロジェクトを設定した後、自己管理型サーバーで Maven を使用して、設定が有効かどうかを確認することをお勧めします。
Jenkins のインストールと設定
[Jenkins 公式 Web サイト] から Jenkins をダウンロードしてインストールします。
Jenkins コンソールの左側のナビゲーションペインで、 を選択し、Git プラグインと GitLab プラグインをインストールします。
git client plugin と git plugin は、Git リポジトリからコードを取得します。
GitLab hook プラグインを使用すると、GitLab webhook によって GitLab プロジェクトのビルドをトリガーできます。
Maven をインストールします。 詳細については、[Maven 公式 Web サイト] にアクセスしてください。
Jenkins コンソールの左側のナビゲーションペインで、
を選択し、Maven のバージョンを選択して、パスを設定します。Jenkins サーバーで SSH RSA キーペアを生成し、公開キーを GitLab にインポートします。 これにより、Jenkins が GitLab からコードを取得する際に、Jenkins の自動認証が可能になります。
Jenkins サーバーに接続されている Jenkins ユーザーの SSH RSA キーペアを生成します。 詳細については、[GitLab ドキュメント] を参照してください。
GitLab のホームページで、 を選択します。 [新しいデプロイキー] をクリックしてキーを追加し、Jenkins サーバーで作成した SSH RSA 公開キーをインポートします。
Jenkins ジョブを作成します。
Jenkins のホームページで、[新しいジョブ] を選択し、Jenkins ジョブを作成して、[フリースタイルプロジェクト] を選択します。
[ソースコード管理] ページで、[git] を選択し、パラメータを設定します。
[リポジトリ URL]: プロジェクトの Git リポジトリの URL。
[認証情報]: セキュリティ認証情報。 Jenkins を実行するユーザーの SSH RSA キーペアがこの Git プロジェクトの GitLab に追加されている場合は、[なし] を選択します。 そうしないと、エラーが返されます。
[ビルドトリガー] タブをクリックし、[SCM をポーリング] を選択します。
[ビルド環境] タブをクリックし、[コンソール出力にタイムスタンプを追加] を選択します。
[ビルド] タブをクリックし、[ビルド手順の追加] をクリックします。
[トップレベル Maven ターゲットの呼び出し] セクションで、[maven バージョン] と [ゴール] を設定します。 マルチモジュールプロジェクトをデプロイすることもできます。 詳細については、「マルチモジュールプロジェクトの Jenkins ジョブを作成する」をご参照ください。
[maven バージョン]: このフィールドの横にあるドロップダウンリストをクリックし、[グローバルツール設定] ページで設定した [maven バージョン] を選択します。
[ゴール]: clean package toolkit:deploy と入力します。 必要に応じて他のパラメータを設定します。
GitLab webhook を設定して自動ビルドを有効にする
GitLab プロジェクトを右クリックし、[設定] > [webhook] を選択します。
[webhook] ページで、Webフック
http://Jenkins server address:Listening port of the Jenkins server/git/notifyCommit?url=Git repository address of your project
[URL] フィールドに と入力します。たとえば、
http://123.57.xx.xxx:8080/git/notifyCommit?url=git@code.aliyun.com:tdy218/hello-edas.git
と入力できます。前の図の Jenkins サーバーアドレスは、Jenkins サーバーの URL です (例:
http://123.57.xx.xxx:8080
)。次に、[webhook のテスト] をクリックします。
GitLab に変更を送信する
上記の設定が有効な場合、GitLab webhook がトリガーされます。 webhook が受信されると、Jenkins は Maven プロジェクトをビルドし、EDAS POP API スクリプトを呼び出してデプロイをトリガーします。
プロジェクトがデプロイされた後、
を選択して出力ログを表示できます。15:58:51 [INFO] アプリケーションが正常にデプロイされました!
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 [INFO] ビルド成功
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 [INFO] 合計時間: 24.330 秒
15:58:51 [INFO] 終了時刻: 2018-12-25T15:58:51+08:00
15:58:51 [INFO] 最終メモリ: 23M/443M
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 終了: 成功
デプロイに失敗した場合は、[EDAS コンソール] にログオンします。 左側のナビゲーションペインで、[アプリケーション] をクリックします。 [アプリケーション] ページで、管理するアプリケーションの名前をクリックします。 アプリケーションの詳細ページが表示されます。 左側のナビゲーションペインで、[変更履歴] をクリックして、このデプロイの実行プロセスを表示します。
マルチモジュールプロジェクトの Jenkins ジョブを作成する
マルチモジュールプロジェクトの Jenkins ジョブを作成する手順は、手順 5 と同じです。 [トップレベル Maven ターゲットの呼び出し] を調整するだけで済みます。 Jenkins でマルチモジュールプロジェクトのサブモジュールをデプロイする場合は、親モジュールで mvn clean install
コマンドを実行します。 その後、サブモジュールで mvn clean package toolkit:deploy
コマンドを実行します。 [デモプロジェクト] の次の構造を使用例として使用します。
上記のデモプロジェクトでは、detail、itemcenter、itemcenter-api がサブモジュールです。 itemcenter をデプロイする場合は、親モジュールで clean install コマンドを実行してターゲットをビルドする必要があります。 その後、itemcenter サブモジュールで clean package toolkit:deploy
コマンドを実行してターゲットをビルドする必要があります。