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 플러그 인을 사용하여 Azure Functions에 Java 함수를 배포하는 방법을 보여줍니다.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 Storage 계정을 만듭니다.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 핵심 도구를 설치합니다.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의 오른쪽 위 모서리에서 포크를 선택합니다.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. 실행을 위한 환경을 준비를 사용합니다.Enable Prepare an environment for the run.

  3. 자리 표시자를 사용자 환경에 적절한 값으로 바꿔서 다음 환경 변수를 속성 콘텐츠에 추가합니다.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. 파이프라인 > 정의 섹션에서 SCM의 파이프라인 스크립트를 선택합니다.In the Pipeline->Definition section, select Pipeline script from SCM.

  5. JenkinsFile 예제에서 사용할 GitHub 포크의 URL 및 스크립트 경로("doc/resources/jenkins/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 HTTP 트리거 및 바인딩 문서의 지침을 통해 권한 부여 키를 가져옵니다.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. 자리 표시자를 적절한 값으로 바꾸고 <input_number> 에 대한 숫자 값을 Java 함수에 대한 입력으로 지정합니다.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: