すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:Jenkins を使用した CI

最終更新日:Jan 07, 2025

このトピックでは、Enterprise Distributed Application Service (EDAS) にデプロイされたアプリケーションの継続的インテグレーション (CI) ソリューションを構築する方法について説明します。 CI ソリューションでは、次のコンピューター言語と開発ツールが使用されます。これらの言語とツールに精通している必要があります。

前提条件

CI を実装する前に、次の準備を完了する必要があります。

  1. AccessKey ID と AccessKey Secret を取得します。 AccessKey ID と AccessKey Secret を取得するには、次の手順を実行します。

    1. EDAS のアクティベーションに使用する [alibaba Cloud アカウント] を使用して、Alibaba Cloud の公式 Web サイトにログオンします。

  2. EDAS コンソールでアプリケーションを作成およびデプロイします。 EDAS コンソールでアプリケーションを作成およびデプロイするには、次の手順を実行します。

    1. [EDAS コンソール] にログオンします。

    2. アプリケーションを作成してデプロイします。 詳細については、「概要」および「概要」をご参照ください。

      アプリケーションをすでに作成している場合は、この手順をスキップします。

    3. 左側のナビゲーションペインで、[アプリケーション] をクリックします。前の手順で作成したアプリケーションの名前をクリックします。 [基本情報] タブで、アプリケーション ID を取得します。

  3. コードは GitLab でホストされています。 GitLab パッケージをビルドするか、[Alibaba Cloud Code] を使用できます。

    このトピックでは、自己管理型の GitLab パッケージを使用例として使用します。 詳細については、[GitLab] にアクセスしてください。

  4. 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 のインストールと設定

  1. [Jenkins 公式 Web サイト] から Jenkins をダウンロードしてインストールします。

  2. Jenkins コンソールの左側のナビゲーションペインで、[システム管理] > [プラグイン] を選択し、Git プラグインと GitLab プラグインをインストールします。

    • git client plugin と git plugin は、Git リポジトリからコードを取得します。

    • GitLab hook プラグインを使用すると、GitLab webhook によって GitLab プロジェクトのビルドをトリガーできます。

  3. Maven をインストールします。 詳細については、[Maven 公式 Web サイト] にアクセスしてください。

    Jenkins コンソールの左側のナビゲーションペインで、[jenkins の管理] > [グローバルツール設定] を選択し、Maven のバージョンを選択して、パスを設定します。

  4. Jenkins サーバーで SSH RSA キーペアを生成し、公開キーを GitLab にインポートします。 これにより、Jenkins が GitLab からコードを取得する際に、Jenkins の自動認証が可能になります。

    1. Jenkins サーバーに接続されている Jenkins ユーザーの SSH RSA キーペアを生成します。 詳細については、[GitLab ドキュメント] を参照してください。

    2. GitLab のホームページで、[設定] > [デプロイキー] を選択します。 [新しいデプロイキー] をクリックしてキーを追加し、Jenkins サーバーで作成した SSH RSA 公開キーをインポートします。

  5. Jenkins ジョブを作成します。

    1. Jenkins のホームページで、[新しいジョブ] を選択し、Jenkins ジョブを作成して、[フリースタイルプロジェクト] を選択します。

    2. [ソースコード管理] ページで、[git] を選択し、パラメータを設定します。

      • [リポジトリ URL]: プロジェクトの Git リポジトリの URL。

      • [認証情報]: セキュリティ認証情報。 Jenkins を実行するユーザーの SSH RSA キーペアがこの Git プロジェクトの GitLab に追加されている場合は、[なし] を選択します。 そうしないと、エラーが返されます。

    3. [ビルドトリガー] タブをクリックし、[SCM をポーリング] を選択します。

    4. [ビルド環境] タブをクリックし、[コンソール出力にタイムスタンプを追加] を選択します。

    5. [ビルド] タブをクリックし、[ビルド手順の追加] をクリックします。

    6. [トップレベル Maven ターゲットの呼び出し] セクションで、[maven バージョン][ゴール] を設定します。 マルチモジュールプロジェクトをデプロイすることもできます。 詳細については、「マルチモジュールプロジェクトの Jenkins ジョブを作成する」をご参照ください。

      • [maven バージョン]: このフィールドの横にあるドロップダウンリストをクリックし、[グローバルツール設定] ページで設定した [maven バージョン] を選択します。

      • [ゴール]: clean package toolkit:deploy と入力します。 必要に応じて他のパラメータを設定します。

GitLab webhook を設定して自動ビルドを有効にする

  1. GitLab プロジェクトを右クリックし、[設定] > [webhook] を選択します。

  2. [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)。

  3. 次に、[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 コマンドを実行してターゲットをビルドする必要があります。