Java 앱 빌드
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
파이프라인을 사용하여 자동으로 다음을 수행할 수 있습니다.
- Maven, Gradle 또는 Ant를 사용하여 프로젝트를 빌드합니다.
- 테스트 및 코드 분석 도구를 실행합니다.
- 파이프라인 및 Azure Artifacts에 앱을 게시합니다.
- Azure 앱 Service, Azure Functions 또는 Azure Kubernetes Service에 앱을 배포합니다.
Android 프로젝트에서 작업하는 경우 Android 앱 빌드, 테스트 및 배포를 참조 하세요.
필수 조건
다음 예제를 실행하려면 다음이 있어야 합니다.
GitHub 리포지토리 만들기
GitHub 계정에 다음 리포지토리를 포크합니다.
https://github.com/MicrosoftDocs/pipelines-java
파이프라인을 만듭니다.
Azure DevOps 조직에 로그인하고, 프로젝트로 이동합니다.
파이프라인으로 이동한 다음, 프로젝트에서 첫 번째 파이프라인을 만드는 경우 새 파이프라인 또는 만들기 파이프라인을 선택합니다.
먼저 소스 코드의 위치로 GitHub를 선택하여 마법사의 단계를 수행합니다. 로그인할 GitHub로 리디렉션될 수 있습니다. 그렇다면 GitHub 자격 증명을 입력합니다.
리포지토리를 선택합니다. Azure Pipelines 앱을 설치하도록 GitHub로 리디렉션될 수 있습니다. 그렇다면 승인 및 설치를 선택합니다.
파이프라인 구성 탭이 표시되면 코드를 빌드하는 방법에 따라 Maven, Gradle 또는 Ant를 선택합니다.
azure-pipelines.yml
파이프라인 정의가 포함된 파일이 리포지토리에 만들어지고 YAML 편집기에서 열립니다. 더 많은 작업을 추가하거나 기존 작업을 수정하여 파이프라인을 사용자 지정할 수 있습니다. 빌드 작업에 대한 자세한 내용은 코드 빌드를 참조하세요.편집
azure-pipelines.yml
을 마쳤으면 저장을 선택하고 실행합니다.리포지토리에
azure-pipelines.yml
파일을 커밋하려면 저장을 선택하고 다시 실행 합니다.
작업을 선택하여 파이프라인의 작동을 감시합니다.
컬렉션으로 이동하여 프로젝트를 선택합니다.
파이프라인을 선택한 다음, 프로젝트에서 첫 번째 파이프라인을 만드는 경우 새 파이프라인 또는 만들기 파이프라인을 선택합니다.
먼저 소스 코드의 위치로 GitHub Enterprise Server를 선택하여 마법사의 단계를 수행합니다.
기존 GitHub 서비스 연결을 사용하거나 새 연결을 만듭니다.
서비스 연결을 만들려면 다음을 수행합니다.
- GitHub Enterprise Server에 연결을 선택합니다.
- GitHub Enterprise Server URL을 입력합니다.
- GitHub Enterprise Server 개인용 액세스 토큰을 입력합니다. 개인용 액세스 토큰이 없는 경우 GitHub Enterprise Server 계정에 만들 수 있습니다. 자세한 내용은 개인용 액세스 토큰 만들기를 참조하세요.
리포지토리를 선택합니다. Azure Pipelines 앱을 설치하도록 GitHub로 리디렉션될 수 있습니다. 그렇다면 승인 및 설치를 선택합니다.
파이프라인 구성 탭이 표시되면 코드를 빌드하는 방법에 따라 Maven, Gradle 또는 Ant를 선택합니다.
azure-pipelines-yml
파이프라인 정의가 포함된 파일이 리포지토리에 만들어지고 YAML 편집기에서 열립니다. 더 많은 작업을 추가하거나 기존 작업을 수정하여 파이프라인을 사용자 지정할 수 있습니다. 빌드 작업에 대한 자세한 내용은 코드 빌드를 참조하세요.편집
azure-pipelines.yml
을 마쳤으면 저장을 선택하고 실행합니다.리포지토리에
azure-pipelines.yml
파일을 커밋하려면 저장을 선택하고 다시 실행 합니다.
작업을 선택하여 파이프라인의 작동을 확인할 수 있습니다.
이제 리포지토리에 사용자 지정할 준비가 된 YAML 파이프라인(azure-pipelines.yml
)이 있습니다. 파이프라인을 변경하려면 파이프라인 페이지에서 파이프라인을 선택한 다음 파일을 편집합니다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 및 도구가 있는지 확인합니다.
파이프라인 편집기에서 옵션 탭의 에이전트 풀 및 에이전트 사양 섹션에서 에이전트 풀 및 에이전트 기능을 선택할 수 있습니다.
예를 들어 Maven 기능을 사용하여 에이전트 풀 및 에이전트를 지정하려면 파일에 다음 코드 조각을 추가합니다 azure-pipelines.yml
.
pool:
name: MyPool
demands: maven
코드 빌드
Maven, Gradle, Ant 또는 스크립트를 사용하여 Java 앱을 빌드할 수 있습니다. 다음 섹션에서는 각 메서드에 대한 빌드 단계를 파이프라인에 추가하는 방법을 보여 줍니다.
Maven
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@2
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
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
.
Inline script(인라인 스크립트)
이 단계에서는 script:
Linux의 Bash와 Windows의 macOS 및 명령 프롬프트를 사용하여 인라인 스크립트를 실행합니다. 자세한 내용은 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 파이프라인을 만드는 방법에 대해 자세히 알아봅니다.