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

완료됨

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

샘플 애플리케이션을 배포하는 GitHub 작업 설정

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

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

Azure App Service 배포 센터의 스크린샷.

Azure App Service 배포 센터는 애플리케이션 스택을 기반으로 하는 GitHub Actions 워크플로 파일을 자동으로 생성합니다. 그런 다음 배포 센터는 올바른 디렉터리의 GitHub 리포지토리에 파일을 커밋합니다. 또한 배포 센터는 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 리포지토리에서 작업 탭을 선택한 다음 왼쪽의 모든 워크플로에서 "Azure Web App에 JAR 앱 빌드 및 배포"를 선택합니다.

  2. 다음으로, 오른쪽 테이블의 워크플로 실행에서 워크플로 실행을 선택하여 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 Pipeline 설정

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

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: 기존 App Service의 이름
  • 패키지: 패키지의 파일 경로 또는 앱 서비스 콘텐츠가 포함된 폴더

빌드 변수 추가

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

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

새 변수를 표시하는 스크린샷

파이프라인 실행 확인

  1. 파이프라인을 저장하고 실행하려면 &>를 선택합니다.
  2. 프로비전 파이프라인에서 수행한 것처럼 각 단계와 단계를 통해 빌드 프로세스를 추적합니다.
  3. Java 애플리케이션이 배포되고 MySQL 데이터베이스에 연결되고 데이터가 반환되는지 확인합니다.

새 Azure 파이프라인 실행을 표시하는 스크린샷

다음 단계

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

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

중요합니다

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

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

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