Microsoft AzureとTalendによって完全なエンドツーエンドのCI/CDパイプラインを自動化する

Talendは、CI/CDの実装を進化させ、簡素化し続けています。このブログでは、Talend Cloud on Microsoft Azureを利用することで、どのように継続的統合(CI)およびデリバリーのパイプラインの完全な自動化、ゼロインストール、およびエンドツーエンドデリバリーを実現して、すべてのDevOpsの目標を達成できるか説明します。

これまでの経緯

Microsoft AzureでのエンドツーエンドのCI/CDパイプラインの構築について詳しく説明する前に、当社のCI/CDの歴史について説明します。Talendは、2016年夏に最初の継続的インテグレーション機能を展開しました。このとき、統合プロジェクトのデリバリーまでの時間を短縮する進化が始まったのでした。データインテグレーターは、単体テスト機能とMaven互換性標準をTalend Studioに組み合わせることで、Jenkinsなどの使い慣れたCIオーケストレーションツールを利用して、自動的なビルド、単体テスト、および成果物リポジトリへのTalendジョブのパッケージングを行えるようになりました。これは大きな第一歩ですが、継続的デリバリーの要素をすべて満足させるものではありませんでした。さらに、Jenkins内で大幅な構成が必要であるとともに、追加のソフトウェアを手動でインストールする必要がありました。

現在では、データ駆動型企業は、より多くのデータに関する知見を絶えず得ようとし、短時間での信頼性の高いデータプロセスを開発チームに求めています。このような需要の増大に対応するため、IT組織は、ダウンタイムゼロの完全なエンドツーエンドCI/CDパイプラインを含むDevOps手法を活用しています。

 

進化した点

TalendをCI/CDプロセスに統合することは、決して目新しいことではありません。実際、私は今年のこれまでに、Microsoft Azure DevOpsとTalendを活用してCI/CDパイプラインを構築した例について記事を書いています。ただし、Talend CI Builderサービスをホストするために、Azureプラットフォームでホステッドエージェントを構築して構成するには大変な労力が必要でした(「記事」を参照)。ほんの数か月後、TalendはゼロインストールCI機能を提供しました。この機能によって、その労力は不要になり、これまでにないほど容易にクラウドで継続的インテグレーション(CI)を実現できるようになりました。現在、Talend Cloud on Microsoft Azureの最新の機能によって、TalendのゼロインストールCI機能を利用したAzure DevOps Orchestrationエンジンと新しいネイティブクラウドサービスという2つのそれぞれの長所を組み合わせて、完全に自動化された方法で、継続的インテグレーション(CI)、継続的デプロイ、および継続的デリバリーという最終的な目標を達成できます。

 

技術的詳細

具体的な例について見ていきましょう。Microsoftホステッドエージェントを使用するために、ゼロインストールCI機能を活用して、AzureパイプラインにCIパイプラインを作成します。以下のステップは、エージェントの設定以外は以前の記事「TalendとAzure DevOpsを使用したCI/CDパイプラインの構築」で説明したステップと基本的に同じです。この記事では、エージェントを設定する必要はありません。Azure DevOpsプラットフォームによって提供されるエージェントを使用します。目標は、CIパイプラインを利用して、ジョブをTalend Cloudにパブリッシュすることです。

以前の記事で詳しく説明しているため、ここでは最初のステップについて詳しく扱いません。ここでは、ゼロインストールCIの使用に関する詳細についてのみ説明します。

 

ファイルはGitHubのこちらにあります。

1.前提条件

主に次の2つの前提条件があります。

  • Talend StudioおよびNexusからのサードパーティライブラリを同期してCIが機能するように、Nexusを設定する必要があります。詳細については、このページでブログの「Configure the Nexus for third-party libraries(サードパーティライブラリ向けのNexusの設定)」を参照してください。
  • 第2の要件は、P2リポジトリと呼ばれるものをホストする必要があることです。その内容とその目的についてはこの記事で既に説明しました。ライセンス電子メールまたはTalend CloudからこのP2リポジトリをダウンロードしたら、たとえば、通常のHTTPサーバーやAzure Blob Storageでホストする必要があります。

Azure Blob Storageでホストする場合は、次の手順を確認してください。それ以外の場合は、この部分はスキップしてください。

  1. a) Storageアカウントを作成して、静的ファイルホスティングを有効にします。

 

Talend Cloud on Microsoft Azure

  1. B) プライマリエンドポイントをコピーして、貼り付けます。これは、P2リポジトリを指すURLになります。$webコンテナが作成されます。解凍済みのP2リポジトリの内容をこの新しく作成したBlob Storageフォルダーにアップロードします。数秒以内に、P2リポジトリがホストされ、使用可能になります。

 Automate a full, end-to-end CI/CD Pipeline with Microsoft Azure and Talend

 

 

2.Azure Pipelinesの設定

最初にAzure Pipelinesで変数を設定する必要があります(パイプライン -> ライブラリ -> + 変数グループ):

 Automate a full, end-to-end CI/CD Pipeline with Microsoft Azure and Talend

以下を設定する必要があります。

  • CLOUD_PASSWORD -> ログインに使用するTalend Cloudユーザーパスワード
  • CLOUD_URL -> Talend Cloud URLデータセンターの場所によって異なります
  • CLOUD_USERNAME -> ログインに使用するTalend Cloudユーザー電子メール(ドメインを使用する場合はドメインを含む)
  • NEXUS_URL -> サードパーティライブラリの同期に使用するNexus URL
  • NEXUS_PASSWORD
  • NEXUS_USERNAME
  • UPDATESITE_PATH ->ホステッドP2リポジトリのURL(外部からアクセス可能である必要があります)

注釈:ユーザー名/パスワードの代わりに個人用アクセストークンを使用することもできます。

 Automate a full, end-to-end CI/CD Pipeline with Microsoft Azure and Talend

以下のパイプラインでパラメーター、-Pcloud.tokenを使用して、CLOUD_TOKEN変数のみを設定します。

 

次に、セキュリティで保護された2つのファイル(7.2.1以上のプラットフォームライセンスファイルとMavenのsettings.xml構成ファイル)を追加します。このファイルでは、先にAzure Pipelinesで設定した変数のパラメーターを使用します。セキュリティで保護されたファイルは、パイプラインで使用できるように必ず認証してください。

 Automate a full, end-to-end CI/CD Pipeline with Microsoft Azure and Talend

<

3.CIパイプライン

YAMLファイルを使用して、Azure PipelinesでCIパイプラインを作成します。これは、パイプラインを正常に動作させるために構成する一意のファイルです。このファイルは、GitHubリポジトリ内のこちらから入手できます。

詳しい手順を説明します。

trigger: none

トリガー属性によって、パイプライン処理が必要なタイミングを定義できます。この例では、すべてのトリガーを無効にします。ただし、リポジトリへのコミットごとに完全に有効にできます。

pool:
 vmImage: 'ubuntu-latest'

パイプラインが実行される場所にプールが記述されました。ここでは、‘ubuntu-latest’仮想マシンイメージを使用します。これは、ビルドを実行するためにAzureによって提供されるホステッドエージェントです。多くの場合、Java、Maven、Dockerがインストールされています。

variables:

- group: Talend Configuration
- name: project_name
  value: 'PUT_YOUR_PROJECT_NAME'
- name: job_name
  value: 'put_your_job_name'
- name: job_version
  value: '0.1'

これらはパイプラインに対して設定した変数です。最初の変数はgroupで、上記で作成した変数groupに対応しています。残りの特定の変数は、ビルドおよびデプロイするジョブに応じて異なります。

 

steps:
  - task: DownloadSecureFile@1
    name: settings_xml
    inputs:
      secureFile: settings.xml
 
  - task: DownloadSecureFile@1
    name: license
    inputs:
      secureFile: license
 
  - task: Maven@3
    inputs:
        mavenPomFile: '$(project_name)/poms/pom.xml' 
        mavenOptions: |
          -Dlicense.path=$(license.secureFilePath)
          -Dupdatesite.path=$(UPDATESITE_PATH)
          -Dservice.url=$(CLOUD_URL)
          -Dcloud.publisher.screenshot=true
          -Xmx3096m -Xmx1024m
        options: '--settings $(settings_xml.secureFilePath) -Pcloud-publisher -pl jobs/process/$(job_name)_$(job_version) -am'
        goals: 'deploy'

 

ここから実際の処理について説明します。パイプラインは、以前にアップロードした2つのファイル(Maven構成のsettings.xmlファイルとライセンスファイル)のダウンロードから開始します。

最後のタスクはMavenコマンドです。ご覧のとおり、UPDATESITE_PATH URLが指定されています。すなわち、ホステッドエージェントでタスクが実行されると、自動的にCommandLineがダウンロードおよびインストールされ、–Pcloud-publisherオプションで指定されたようにジョブがビルドされて、Talend Cloudにパブリッシュされます。これを複雑化しないために、環境またはワークスペースにパブリッシュするためのオプションは特に追加していません。デフォルトでは、成果物はアカウントに対して定義されたデフォルトにパブリッシュされます。

 

このとき、Azure PipelinesのCIパイプラインは実行の準備ができています。すべてが正常に動作した場合、デフォルト環境でパブリッシュされたTalend Cloudアカウントで自分の成果物を確認できます。

4.最適化

現在のパイプラインでは、ビルドごとにCommandLineをダウンロードしています。ビルドを実行する頻度が頻繁でない場合は、これでもかまいません。ただし、多くのビルドを実行する場合は、これを避けて、プロセスを高速化したくなるかもしれません。1つの解決策は、Azure DevOpsワークスペースでCommandLineをキャッシュすることです。幸いにも、最近、Azure DevOpsチームがパイプラインキャッシング(ベータ版)を公開しました。これは、同じ種類のジョブを定期的に作成する場合、CommandLineおよびMavenローカルリポジトリ(.m2)に使用できます。

結論

少し前まで、CI/CDパイプラインを実装することは、ソフトウェアのインストールと複雑な構成という多くの作業を伴う根気のいる大変な作業でした。最近になって、TalendがゼロインストールCI機能を提供することで、この労力が大幅に軽減されました。現在、私たちは、Microsoftとのパートナーシップを通じて、Azure Cloud PlatformでTalend Cloud統合アプリケーションを提供します。両方のソリューションの利点を十分に活用して、完全に自動化されたエンドツーエンドのCI/CDパイプラインを提供できるようになりました。

詳細については、「Azure ソリューション」ページを参照してください

 

ディスカッションに参加

0 Comments

Leave a Reply