Jenkins Azure Functions プラグインを使用した Azure Functions へのデプロイDeploy to Azure Functions using the Jenkins Azure Functions plug-in

Azure Functions はサーバーレス コンピューティング サービスです。Azure Functions is a serverless compute service. Azure Functions を使用すると、インフラストラクチャをプロビジョニングまたは管理することなく、オンデマンドでコードを実行できます。Using Azure Functions, you can run code on-demand without provisioning or managing infrastructure. このチュートリアルでは、Azure Functions プラグインを使用して Java 関数を Azure Functions にデプロイする方法を説明します。This tutorial shows how to deploy a Java function to Azure Functions using the Azure Functions plug-in.

前提条件Prerequisites

Java 関数の作成Create a Java function

Java ランタイム スタックを備えた Java 関数を作成するには、Azure portal または Azure CLI を使用します。To create a Java function with the Java runtime stack, use either the Azure portal or the Azure CLI.

次の手順では、Azure CLI を使用して Java 関数を作成する方法を説明します。The following steps show how to create a Java function using the Azure CLI:

  1. <resource_group> プレースホルダーを実際のリソース グループ名に置き換えて、リソース グループを作成します。Create a resource group, replacing the <resource_group> placeholder with your resource group name.

    az group create --name <resource_group> --location eastus
    
  2. プレースホルダーを適切な値に置き換えて、Azure ストレージ アカウントを作成します。Create an Azure storage account, replacing the placeholders with the appropriate values.

    az storage account create --name <storage_account> --location eastus --resource-group <resource_group> --sku Standard_LRS    
    
  3. プレースホルダーを適切な値に置き換えて、テスト用の関数アプリを作成します。Create the test function app, replacing the placeholders with the appropriate values.

    az functionapp create --resource-group <resource_group> --consumption-plan-location eastus --name <function_app> --storage-account <storage_account>
    

Jenkins サーバーの準備Prepare Jenkins server

次の手順では、Jenkins サーバーを準備する方法について説明します。The following steps explain how to prepare the Jenkins server:

  1. Azure に Jenkins サーバーをデプロイします。Deploy a Jenkins server on Azure. Jenkins サーバーのインスタンスをまだインストールしていない場合は、Azure での Jenkins サーバーの作成に関する記事でそのプロセスが説明されています。If you don't already have an instance of the Jenkins server installed, the article, Create a Jenkins server on Azure guides you through the process.

  2. SSH を使用して Jenkins インスタンスにサインインします。Sign in to the Jenkins instance with SSH.

  3. Jenkins インスタンスで、次のコマンドを使用して maven をインストールします。On the Jenkins instance, install maven using the following command:

    sudo apt install -y maven
    
  4. Jenkins インスタンスのターミナルのプロンプトで、次のコマンドを実行して Azure Functions Core Tools をインストールします。On the Jenkins instance, install the Azure Functions Core Tools by issuing the following commands at a terminal prompt:

    wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    sudo apt-get update
    sudo apt-get install azure-functions-core-tools
    
  5. Jenkins ダッシュボードで、次のプラグインをインストールします。In the Jenkins dashboard, install the following plugins:

    • Azure Functions プラグインAzure Functions Plug-in
    • EnvInject プラグインEnvInject Plug-in
  6. Jenkins で Azure リソースに対する認証とアクセスを行うには、Azure サービス プリンシパルが必要です。Jenkins needs an Azure service principal to authenticate and access Azure resources. 詳細な手順については、Azure App Service へのデプロイに関する記事を参照してください。Refer to the Deploy to Azure App Service for step-by-step instructions.

  7. Azure サービス プリンシパルを使用して、資格情報の種類 "Microsoft Azure サービス プリンシパル" を Jenkins に追加します。Using the Azure service principal, add a "Microsoft Azure Service Principal" credential type in Jenkins. Azure App Service へのデプロイに関するチュートリアルを参照してください。Refer to the Deploy to Azure App Service tutorial.

サンプル GitHub リポジトリのフォークFork the sample GitHub repo

  1. 奇数または偶数のサンプル アプリ用の GitHub リポジトリにサインインしますSign in to the GitHub repo for the odd or even sample app.

  2. GitHub の右上隅にある [Fork](フォーク) を選択します。In the upper-right corner in GitHub, choose Fork.

  3. プロンプトに従ってお客様の GitHub アカウントを選択し、フォークを完了します。Follow the prompts to select your GitHub account and finish forking.

Jenkins パイプラインの作成Create a Jenkins Pipeline

このセクションでは、Jenkins パイプラインを作成します。In this section, you create the Jenkins Pipeline.

  1. Jenkins ダッシュボードで、パイプラインを作成します。In the Jenkins dashboard, create a Pipeline.

  2. [Prepare an environment for the run](実行環境を準備する) を有効にします。Enable Prepare an environment for the run.

  3. 次の環境変数を [Properties Content](プロパティのコンテンツ) に追加します。その際、プレースホルダーは、環境に合った適切な値に置き換えます。Add the following environment variables in Properties Content, replacing the placeholders with the appropriate values for your environment:

    AZURE_CRED_ID=<service_principal_credential_id>
    RES_GROUP=<resource_group>
    FUNCTION_NAME=<function_name>
    
  4. [Pipeline](パイプライン)、[Definition](定義) セクションの順に移動し、 [Pipeline script from SCM](SCM からのパイプライン スクリプト) を選択します。In the Pipeline->Definition section, select Pipeline script from SCM.

  5. GitHub フォークの URL とスクリプト パス ("doc/resources/jenkins/JenkinsFile") を入力し、JenkinsFile の例で使用します。Enter your GitHub fork's URL and script path ("doc/resources/jenkins/JenkinsFile") to use in the JenkinsFile example.

    node {
     stage('Init') {
         checkout scm
         }
    
     stage('Build') {
         sh 'mvn clean package'
         }
    
     stage('Publish') {
         azureFunctionAppPublish appName: env.FUNCTION_NAME, 
                                 azureCredentialsId: env.AZURE_CRED_ID, 
                                 filePath: '**/*.json,**/*.jar,bin/*,HttpTrigger-Java/*', 
                                 resourceGroup: env.RES_GROUP, 
                                 sourceDirectory: 'target/azure-functions/odd-or-even-function-sample'
         }
     }
    

ビルドとデプロイBuild and deploy

ここで、Jenkins ジョブを実行します。It's now time to run the Jenkins job.

  1. 最初に、記事「Azure Functions のトリガーとバインド」の手順を使用して、承認キーを取得します。First, obtain the authorization key via the instructions in the Azure Functions HTTP triggers and bindings article.

  2. ブラウザーでアプリの URL を入力します。In your browser, enter the app's URL. プレースホルダーを適切な値に置き換え、Java 関数に対する入力として <input_number> の数値を指定します。Replace the placeholders with the appropriate values and specify a numeric value for <input_number> as input for the Java function.

    https://<function_app>.azurewebsites.net/api/HttpTrigger-Java?code=<authorization_key>&number=<input_number>
    
  3. 次の出力例のような結果が表示されます (この場合、テストとして 365 という奇数が使用されました)。You'll see results similar to the following example output (where an odd number - 365 - was used as a test):

    The number 365 is Odd.
    

リソースをクリーンアップするClean up resources

このアプリケーションを引き続き使用しない場合は、作成したリソースを次の手順で削除します。If you're not going to continue to use this application, delete the resources you created with the following step:

az group delete -y --no-wait -n <resource_group>

次のステップNext steps

Azure Functions の詳細については、次のリソースを参照してください。To learn more about Azure Functions, see the following resource: