다음을 통해 공유


Java 앱 빌드

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Pipelines를 사용하여 Java 애플리케이션의 빌드, 테스트 및 배포를 자동화합니다. 이 문서에서는 Maven, Gradle 또는 Ant와 같은 도구를 사용하여 Java 프로젝트에 대한 파이프라인을 설정하는 방법을 설명합니다. App Service, Functions 또는 Kubernetes와 같은 Azure 서비스에 앱을 배포하는 방법도 알아봅니다.

파이프라인을 사용하여 다음을 수행합니다.

Android 프로젝트에서 작업하는 경우 Android 앱 빌드, 테스트 및 배포를 참조하세요.

필수 조건

제품 요구 사항
Azure 데브옵스 - Azure DevOps 프로젝트.
- Microsoft 호스팅 에이전트에서 파이프라인을 실행하는 기능입니다. 병렬 작업을 구매하거나 무료 계층을 요청할 수 있습니다.
- YAML 및 Azure Pipelines에 대한 기본 지식 자세한 내용은 첫 번째 파이프라인만들기를 참조하세요.
- 권한:
     - 파이프라인을 만들려면 참가자 그룹에 있어야 하며 그룹에 빌드 파이프라인 만들기 권한이 허용으로 설정되어 있어야 합니다. 프로젝트 관리자 그룹의 구성원은 파이프라인을 관리할 수 있습니다.
    서비스 연결을 만들려면, 관리자 또는 작성자 역할이 있어야 합니다.
깃허브 - GitHub 계정입니다.
- Azure Pipelines에 권한을 부여하는 GitHub 서비스 연결.
하늘빛 Azure 구독.
제품 요구 사항
Azure 데브옵스 - Azure DevOps 프로젝트.
자체적으로 호스팅되는 에이전트입니다. 에이전트를 만들려면 자체 호스팅 에이전트를 참조하세요.
- YAML 및 Azure Pipelines에 대한 기본 지식 자세한 내용은 첫 번째 파이프라인만들기를 참조하세요.
- 권한:
    - 파이프라인을 만들려면 참가자 그룹에 있어야 하며 그룹에 빌드 파이프라인 만들기 권한이 허용으로 설정되어 있어야 합니다. 프로젝트 관리자 그룹의 구성원은 파이프라인을 관리할 수 있습니다.
    서비스 연결을 만들려면, 관리자 또는 작성자 역할이 있어야 합니다.
깃허브 - GitHub 계정입니다.
- Azure Pipelines에 권한을 부여하는 GitHub 서비스 연결.
하늘빛 Azure 구독.

GitHub 리포지토리 만들기

GitHub 계정에 다음 리포지토리를 포크합니다.

https://github.com/MicrosoftDocs/pipelines-java

파이프라인을 만듭니다.

  1. Azure DevOps 조직에 로그인하고 프로젝트로 이동합니다.

  2. 파이프라인으로 이동하고 난 후, 프로젝트에서 첫 번째 파이프라인을 만드는 경우 새 파이프라인 또는 파이프라인 만들기를 선택합니다.

  3. 소스 코드의 위치로 GitHub 를 선택하여 마법사 단계를 수행합니다. 로그인할 GitHub로 리디렉션될 수 있습니다. 그렇다면 GitHub 자격 증명을 입력합니다.

  4. 리포지토리를 선택합니다. Azure Pipelines 앱을 설치하도록 GitHub로 리디렉션될 수 있습니다. 그렇다면 승인 및 설치 를 선택하여 계속 진행합니다.

  5. 파이프라인 구성 탭이 표시되면 코드를 빌드하는 방법에 따라 Maven, Gradle 또는 Ant선택합니다.

  6. azure-pipelines.yml 파이프라인 정의가 포함된 파일은 리포지토리에 만들어지고 YAML 편집기에서 열립니다. 더 많은 작업을 추가하거나 기존 작업을 수정하여 파이프라인을 사용자 지정할 수 있습니다. 빌드 작업에 대한 자세한 내용은 코드 빌드를 참조하세요.

  7. 편집 azure-pipelines.yml을 마쳤으면 저장을 선택하고 실행합니다.

  8. 리포지토리에 azure-pipelines.yml 파일을 커밋하려면 저장을 선택하고 다시 실행 합니다.

작업을 선택하여 파이프라인의 작동을 감시합니다.

  1. 컬렉션으로 이동하여 프로젝트를 선택합니다.

  2. 파이프라인을 선택한 후, 프로젝트의 첫 번째 파이프라인을 생성하는 경우 새 파이프라인 또는 파이프라인 만들기를 선택합니다.

  3. 먼저 소스 코드의 위치로 GitHub Enterprise Server선택하여 마법사의 단계를 수행합니다.

  4. 기존 GitHub 서비스 연결을 사용하거나 새 연결을 만듭니다.

    서비스 연결을 만들려면 다음을 수행합니다.

    1. GitHub Enterprise Server에 연결을 선택합니다.
    2. GitHub Enterprise Server URL을 입력합니다.
    3. GitHub Enterprise Server 개인용 액세스 토큰을 입력합니다. 개인용 액세스 토큰이 없는 경우 GitHub Enterprise Server 계정에 만들 수 있습니다. 자세한 내용은 개인용 액세스 토큰 만들기를 참조하세요.
  5. 리포지토리를 선택합니다. Azure Pipelines 앱을 설치하도록 GitHub로 리디렉션될 수 있습니다. 그렇다면 승인 및 설치를 선택합니다.

  6. 파이프라인 구성 탭이 표시되면 코드를 빌드하는 방법에 따라 Maven, Gradle 또는 Ant선택합니다.

  7. azure-pipelines.yml 파이프라인 정의가 포함된 파일은 리포지토리에 만들어지고 YAML 편집기에서 열립니다. 더 많은 작업을 추가하거나 기존 작업을 수정하여 파이프라인을 사용자 지정할 수 있습니다. 빌드 작업에 대한 자세한 내용은 코드 빌드를 참조하세요.

  8. 편집 azure-pipelines.yml을 마쳤으면 저장을 선택하고 실행합니다.

  9. 리포지토리에 azure-pipelines.yml 파일을 커밋하려면 저장을 선택하고 다시 실행 합니다.

작업을 선택하면 파이프라인의 실행을 확인할 수 있습니다.

이제 리포지토리에 사용자 지정할 준비가 된 YAML 파이프라인(azure-pipelines.yml)이 있습니다. 파이프라인을 변경하려면 파이프라인 페이지에서 해당 항목을 선택한 다음 파일을 편집합니다.

빌드 환경

Azure Pipelines를 사용하여 인프라를 설정하지 않고 Java 앱을 빌드합니다. Windows, Linux 또는 macOS 이미지에서 빌드합니다. Azure Pipelines의 Microsoft 호스팅 에이전트에는 Java용 최신 JDK 및 기타 도구가 미리 설치되어 있습니다. 설치된 Java 버전을 확인하려면 Microsoft 호스팅 에이전트를 참조하세요.

파일에서 다음 코드 azure-pipelines.yml 조각을 업데이트하여 적절한 이미지를 선택합니다.

pool:
  vmImage: 'ubuntu-latest' # other options: 'macOS-latest', 'windows-latest'

전체 이미지 목록은 Microsoft 호스팅 에이전트를 참조하세요.

Microsoft 호스팅 에이전트 대신 Java가 설치된 자체 호스팅 에이전트를 설정합니다. 대규모 리포지토리가 있거나 증분 빌드를 실행하는 경우 자체 호스팅 에이전트를 사용하여 시간을 절약합니다.

빌드는 자체 호스팅 에이전트에서 실행됩니다. 선택한 빌드 방법에 필요한 Java 및 도구가 에이전트의 호스트에 설치되어 있는지 확인합니다.

파이프라인 편집기에서 옵션 탭의 에이전트 풀 및 에이전트 사양 섹션에서 에이전트 풀에이전트 기능을 선택할 수 있습니다.

예를 들어, azure-pipelines.yml 파일에 다음 코드 조각을 추가하여 Maven 기능이 있는 에이전트 풀과 에이전트를 지정합니다.

pool: 
  name: MyPool
  demands: maven

코드 빌드

Maven, Gradle, Ant 또는 스크립트를 사용하여 Java 앱을 빌드할 수 있습니다. 다음 섹션에서는 각 메서드에 대한 빌드 단계를 파이프라인에 추가하는 방법을 보여 줍니다.

메이븐

Maven 빌드의 경우 파일에 다음 작업을 추가합니다 azure-pipelines.yml . 프로젝트와 일치하도록 값을 바꿉합니다. 작업 옵션에 대한 자세한 내용은 Maven 작업을 참조하세요.

steps:
- task: Maven@4
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    goals: 'package'

Spring Boot의 경우 Maven 작업도 사용할 수 있습니다. mavenPomFile 값이 pom.xml 파일 경로를 올바르게 반영하는지 확인하세요. 예를 들어 Spring Boot 샘플 리포지토리사용하는 경우 경로는 다음과 같습니다complete/pom.xml.

빌드 경로 사용자 지정

mavenPomFile 파일이 리포지토리의 루트에 없는 경우 pom.xml 값을 설정합니다. 파일 경로 값은 리포지토리의 루트(예: IdentityService/pom.xml 또는 $(system.defaultWorkingDirectory)/IdentityService/pom.xml.)를 기준으로 해야 합니다.

Maven 목표 사용자 지정

목표 값을 Maven이 실행할 공백으로 구분된 목표 목록(예: )으로 clean package설정합니다. 일반적인 Java 단계 및 목표에 대한 자세한 내용은 Apache의 Maven 설명서를 참조 하세요.

Gradle

Gradle 빌드의 경우 파일에 다음 작업을 추가합니다 azure-pipelines.yml . 이러한 옵션에 대한 자세한 내용은 Gradle 작업을 참조하세요.

steps:
- task: Gradle@3
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'build'

Gradle 래퍼 도구

파일이 리포지 gradlew 토리에 있는지 확인합니다. 그렇지 않은 경우 프로젝트의 루트 디렉터리에서 실행 gradle wrapper 하여 생성합니다. Gradle 래퍼를 만드는 방법에 대한 자세한 내용은 Gradle을 확인하세요.

Gradle 버전 선택

리포지토리 gradle/wrapper/gradle-wrapper.properties 의 파일에 distributionUrl 빌드 중에 다운로드하고 사용할 다른 Gradle 버전을 지정하는 속성이 없는 한 에이전트 컴퓨터에 설치된 Gradle 버전이 사용됩니다.

빌드 경로 조정

workingDirectory 파일이 리포지토리의 루트에 없는 경우 gradlew 값을 설정합니다. 디렉터리 값은 리포지토리의 루트(예: IdentityService 또는 $(system.defaultWorkingDirectory)/IdentityService.)를 기준으로 해야 합니다.

gradleWrapperFile 파일이 리포지토리의 루트에 없는 경우 gradlew 값을 조정합니다. 파일 경로 값은 리포지토리의 루트(예: IdentityService/gradlew 또는 $(system.defaultWorkingDirectory)/IdentityService/gradlew.)를 기준으로 해야 합니다.

Gradle 작업 조정

Gradle에서 실행할 작업의 값(예: build 또는 check)을 조정합니다. Gradle의 일반적인 Java 플러그 인 작업에 대한 자세한 내용은 Gradle의 설명서를 참조 하세요.

개미

Ant 빌드를 사용하여 파일에 다음 작업을 추가합니다 azure-pipelines.yml . 파일 경로 build.xml 와 같은 값을 프로젝트 구성과 일치하도록 변경합니다. 이러한 옵션에 대한 자세한 내용은 Ant 작업을 참조하세요. 샘플 리포지토리를 사용하는 경우 리포지토리에 build.xml 파일을 제공해야 합니다.

steps:
- task: Ant@1
  inputs:
    workingDirectory: ''
    buildFile: 'build.xml'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: 'default'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'

스크립트

명령줄 또는 스크립트를 사용하여 빌드하려면 이러한 코드 azure-pipelines.yml 조각 중 하나를 파일에 추가합니다.

인라인 스크립트

이 단계에서는 script: Linux 및 macOS의 Bash와 Windows의 명령 프롬프트를 사용하여 인라인 스크립트를 실행합니다. 자세한 내용은 Bash 또는 명령줄 작업을 참조하세요.

steps:
- script: |
    echo Starting the build
    mvn package
  displayName: 'Build with Maven'

스크립트 파일

이 작업은 리포지토리에 있는 스크립트 파일을 실행합니다. 자세한 내용은 셸 스크립트, Batch 스크립트 또는 PowerShell 작업을 참조하세요.

steps:
- task: ShellScript@2
  inputs:
    scriptPath: 'build.sh'

다음 단계

빌드 출력을 파이프라인에 게시합니다. Maven 패키지 또는 .war/jar 파일에 앱을 패키지하고 게시하여 웹 애플리케이션에 배포합니다.

배포 대상에 대한 CI/CD 파이프라인을 만드는 방법에 대해 자세히 알아봅니다.