연습 - 샘플 Spring Boot 애플리케이션 배포

완료됨

이 연습에서는 자동화된 워크플로를 사용하여 Spring Boot 샘플 애플리케이션을 빌드 및 배포합니다.

샘플 애플리케이션을 배포하도록 GitHub 동작 설정

Azure 리소스를 프로비저닝했으므로 이제 샘플 Spring Boot 애플리케이션을 배포할 수 있습니다.

Maven GitHub 워크플로를 만들려면 Azure App Service 포털의 Deployment Center에서 제공되는 기본 제공 CI/CD(연속 통합 및 지속적인 업데이트) 마법사 도구를 사용합니다.

Screenshot of the Azure App Service Deployment Center.

Azure App Service Deployment Center는 애플리케이션 스택을 기반으로 하는 GitHub Actions 워크플로 파일을 자동으로 생성합니다. 그런 다음 Deployment Center는 파일을 올바른 디렉터리에 있는 GitHub 리포지토리에 커밋합니다. Deployment Center는 GitHub 동작을 Azure App Service 게시 프로필에도 연결합니다.

  1. Azure Portal에서 Azure App Service 웹앱으로 이동합니다.

  2. 왼쪽 창에서 배포를 확장하고 배포 센터를 선택합니다.

  3. 원본 드롭다운의 지속적인 배포(CI/CD) 아래에서 GitHub를 선택합니다.

  4. GitHub Actions를 선택합니다. (기본값이어야 하지만 그렇지 않은 경우 공급자 변경을 선택하여 공급자 옵션을 로드합니다.)

  5. 설정의 드롭다운 목록에서 다음을 수행합니다.

    a. GitHub 리포지토리를 선택합니다.
    b. 분기로 main을 선택합니다.
    c. 애플리케이션 스택으로 JAVA 8을 선택합니다.

  6. 마지막 페이지에서 선택 항목을 검토하고 리포지토리로 커밋될 워크플로 파일을 미리 봅니다.

  7. 저장을 선택하여 워크플로 파일을 리포지토리에 커밋하고, 즉시 앱 빌드 및 배포를 시작합니다.

    참고

    동작 탭을 선택하고 빌드 및 배포 워크플로를 선택한 다음 작업 다시 실행을 선택하여 리포지토리에서 GitHub Actions 워크플로를 트리거할 수도 있습니다.

GitHub Actions 빌드 확인

  1. GitHub 리포지토리에서 작업 탭을 선택한 다음, 왼쪽의 모든 워크플로에서 “Build and deploy JAR app to Azure Web App(JAR 앱을 빌드하고 Azure Web App에 배포)”을 선택합니다.

  2. 다음으로 오른쪽 테이블의 워크플로 실행에서 “Add or update the App Service deployment workflow configuration”(App Service 배포 워크플로 구성 추가 또는 업데이트) 워크플로 실행을 선택합니다.

  3. 워크플로 실행이 완료될 때까지 기다린 다음 워크플로 실행의 배포 작업에서 Azure 웹앱 URL을 표시하는 배포 작업의 URL을 복사합니다.

  4. 마지막으로 브라우저에서 URL을 열고 Java 애플리케이션이 배포되고 MySQL 데이터베이스에 연결되어 데이터를 반환하고 있는지 확인합니다.

다음 단계

축하합니다! 이제 두 가지 GitHub Actions 워크플로인 프로비저닝 동작 및 빌드/배포 동작이 있습니다.

git push 명령을 입력하여 코드를 커밋할 때마다 빌드 및 배포 동작이 트리거되고 애플리케이션이 배포됩니다.

중요

GitHub 동작의 프로비전을 다시 실행해도 이미 있는 리소스는 다시 생성되지 않습니다. 리소스 그룹 또는 리소스를 수동으로 삭제한 다음 GitHub 동작을 다시 실행해야 합니다.

빌드 및 배포 GitHub 동작을 다시 실행하면 애플리케이션이 대체됩니다.

App Service 인스턴스를 다시 만드는 경우 새 게시 프로필도 변경해야 합니다. 다음 줄만 변경해야 합니다.

publish-profile: ${{ secrets.AzureAppService_PublishProfile_c1ee8d191003493b9c9e13a9b78ad2c3 }}

샘플 애플리케이션을 배포하는 Azure 파이프라인 설정

이전과 마찬가지로 애플리케이션을 빌드 및 배포하기 위해 Azure 파이프라인을 만들어야 합니다.

Azure DevOps에서 프로젝트로 이동하여 “파이프라인”을 선택하고 “새 파이프라인”(오른쪽 위 모서리)을 선택합니다.

이제 파이프라인을 설정하는 4개의 탭이 제공됩니다.

  1. 연결” 탭에서 “GitHub”(YAML 파일)를 선택합니다.
  2. 선택” 탭에서 템플릿을 포함하는 GitHub 리포지토리를 선택합니다.
  3. 구성” 탭에서 “기존 Azure Pipelines YAML 파일”을 사용하려면 선택합니다.
  4. 경로에서 이번에는 “/azuredevops/build_deploy.yml”을 선택합니다.
  5. 파이프라인을 실행하기 전에 계속을 선택하고 “*검토” 탭으로 이동하여 파이프라인을 검토합니다.

파이프라인 YAML 검토 화면에서 파이프라인을 만드는 데 사용하는 Yaml 파일을 검사합니다.

name: Build and Deploy

trigger:
- main

stages:

# Build your Spring Boot App using Maven
- stage: Build
  displayName: Build stage
  jobs:
  - job: MavenPackageAndPublishArtifacts
    displayName: Maven Package and Publish Artifacts
    pool:
      vmImage: 'ubuntu-latest'

    steps:
    - task: Maven@3
      displayName: 'Maven Package'
      inputs:
        mavenPomFile: 'pom.xml'

    - task: CopyFiles@2
      displayName: 'Copy Files to artifact staging directory'
      inputs:
        SourceFolder: '$(System.DefaultWorkingDirectory)'
        Contents: '**/target/*.?(war|jar)'
        TargetFolder: $(Build.ArtifactStagingDirectory)

    - upload: $(Build.ArtifactStagingDirectory)
      artifact: drop

# Deploy to Azure using the AzureWebApp task using your Service Connection
- stage: Deploy
  displayName: Deploy stage
  dependsOn: Build
  condition: succeeded()
  jobs:
  - deployment: DeployLinuxWebApp
    displayName: Deploy Linux Web App
    environment: 'production'
    pool:
      vmImage: 'ubuntu-latest'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            displayName: 'Azure Web App Deploy'
            inputs:
              azureSubscription: $(serviceConnection)
              appType: webAppLinux
              appName: '$(webAppName)'
              package: '$(Pipeline.Workspace)/drop/**/target/*.?(war|jar)'

빌드” 구성에서 사용하는 일부 필드를 살펴보겠습니다.

  • azureSubscription: Azure 구독
  • appType: 웹앱 유형
  • appName: 기존 앱 서비스 이름
  • package: 패키지 또는 앱 서비스 콘텐츠가 포함된 폴더에 대한 파일 경로

빌드 변수 추가

프로비저닝 파이프라인과 마찬가지로 빌드 및 배포 파이프라인을 저장하고 실행하기 전에 파이프라인의 변수를 추가해야 합니다.

  1. 오른쪽 상단에서 Variables를 선택합니다.
  2. 값을 사용자의 서비스 연결 이름으로 하여 serviceConnection이라는 변수를 추가합니다.
  3. 변수를 저장하려면 오른쪽 아래 모서리에 있는 확인을 선택합니다.
  4. App Service 이름(Terraform 변수 “application_name”에 정의된 값과 동일)으로 webAppName이라는 두 번째 변수를 추가합니다.
  5. 변수를 저장하려면 확인을 선택합니다.
  6. 두 변수를 모두 저장하려면 오른쪽 아래 모서리에 있는 저장을 선택합니다.

Screenshot displaying the new variables.

파이프라인 실행 확인

  1. 파이프라인을 저장하고 실행하려면 &>를 선택합니다.
  2. 프로비전 파이프라인의 경우와 마찬가지로 각 스테이지와 단계를 통해 빌드 프로세스를 추적합니다.
  3. Java 애플리케이션이 배포되었고, MySQL 데이터베이스에 연결되었으며, 데이터를 반환하고 있는지 확인합니다.

Screenshot displaying the new Azure Pipeline run.

다음 단계

축하합니다! 이제 프로비전 파이프라인과 빌드 및 배포 파이프라인의 두 가지 Azure Pipeline 워크플로가 있습니다.

git push 명령을 입력하여 코드를 기본 분기에 커밋할 때마다 빌드 및 배포 파이프라인이 트리거되고 애플리케이션이 배포됩니다.

중요

프로비전 파이프라인을 다시 실행해도 이미 있는 리소스는 다시 만들어지지 않습니다. 리소스 그룹 또는 리소스를 수동으로 삭제한 다음 파이프라인을 다시 실행해야 합니다. 프로덕션 환경에서 이를 보다 효과적으로 활용하는 방법에 대한 자세한 내용은 요약 섹션에서 확인할 수 있습니다.

빌드 및 배포 파이프라인을 다시 실행하면 애플리케이션이 대체됩니다.

다음 단원은 이 모듈에서 배운 내용을 확인하는 지식 점검입니다.