이 페이지에서는 Cloud Build를 사용하여 자바 기반 애플리케이션을 빌드, 테스트, 컨테이너화하고 Artifact Registry에 컨테이너 이미지를 업로드하고, 빌드 출처를 생성하는 방법을 설명합니다.
시작하기 전에
- 자바 기반 애플리케이션을 숙지합니다.
Dockerfile
을 포함하여 자바 프로젝트를 준비합니다.- Artifact Registry에서 Docker 저장소를 준비하거나 새 저장소를 만듭니다.
- Cloud Build 구성 파일 작성 방법을 숙지합니다.
- 이 페이지에서
gcloud
명령어를 실행하려면 Google Cloud CLI를 설치합니다.
maven
또는 gradle
이미지 사용
Docker Hub에서 maven
이미지 또는 gradle
이미지를 사용하여 Java 애플리케이션을 빌드하도록 Cloud Build를 구성할 수 있습니다.
maven
또는 gradle
이미지에서 작업을 수행하려면 이미지 URL을 지정하고 빌드 구성 파일의 name
필드에 태그로 지정된 이미지 버전을 지정합니다. 이미지 태그를 지정하지 않으면 Cloud Build에 기본적으로 latest
이미지가 사용됩니다. Cloud Build는 이미지의 기본 진입점을 사용하여 name
에 지정된 이미지를 시작합니다. 기본 진입점을 재정의하고 maven
또는 gradle
을 진입점으로 호출하려면 entrypoint
필드에 mvn
또는 gradle
을 지정합니다.
다음 빌드 구성 파일은 maven
또는 gradle
이미지에 대해 entrypoint
를 지정하고 빌드 도구 버전을 출력합니다.
maven
steps:
- name: maven:3.3-jdk-8
entrypoint: mvn
args: ['--version']
gradle
steps:
- name: gradle:5.6.2-jdk8
entrypoint: gradle
args: ['--version']
Java
빌드 구성
프로젝트 루트 디렉터리에
cloudbuild.yaml
이라는 빌드 구성 파일을 만듭니다.테스트 실행:
maven
및gradle
은 종속 항목을 다운로드하고, 애플리케이션을 빌드하고, 소스 코드에 지정된 모든 테스트를 실행하는maven test
및gradle test
를 제공합니다. 빌드 단계의args
필드는 인수 목록을 가져와서name
필드로 참조되는 이미지에 전달합니다.빌드 구성 파일에서
test
를args
필드에 추가하여maven
및gradle
내에서test
를 호출합니다.maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['test']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['test']
패키지 애플리케이션:
maven
이미지에 대해 JAR 파일에 애플리케이션을 패키지화하려면args
필드에package
명령어를 지정합니다.package
명령어는/workspace/target/
에 JAR 파일을 빌드합니다.gradle
이미지에 대해 JAR 파일에 애플리케이션을 패키지화하려면args
필드에assemble
명령어를 지정합니다.assemble
명령어는workspace/build/libs
에 JAR 파일을 빌드합니다.다음 빌드 단계는 자바 애플리케이션을 패키지화합니다.
maven
steps: - name: maven:3.3-jdk-8 entrypoint: mvn args: ['package','-Dmaven.test.skip=true']
gradle
steps: - name: gradle:5.6.2-jdk8 entrypoint: gradle args: ['assemble']
애플리케이션 컨테이너화: Cloud Build는 Java 애플리케이션을 컨테이너화하기 위해 사용할 수 있는 사전 빌드된 Docker 이미지를 제공합니다. Java 애플리케이션을 컨테이너화하려면 빌드 구성 파일에서 다음 안내를 따릅니다.
name
필드를 추가하고gcr.io/cloud-builders/docker
에서 사전 빌드된 Docker 이미지를 지정합니다.args
필드를 추가하고 빌드할 컨테이너 이미지 이름, 빌드 아티팩트 경로를 포함하여build
인수를 지정합니다.images
필드를 추가하여 빌드된 컨테이너 이미지를 Artifact Registry에 푸시합니다.선택사항: 빌드 구성 파일의
options
필드 내에requestedVerifyOption: VERIFIED
를 추가하여 소프트웨어 아티팩트에 대한 공급망 등급(SLSA) 출처 생성을 사용 설정합니다.
다음 빌드 단계에서는 애플리케이션을 컨테이너화하고 컨테이너 이미지를 Artifact Registry에 푸시하고, 빌드 출처 정보를 생성합니다.
maven
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=target/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
gradle
steps: - name: gcr.io/cloud-builders/docker args: ['build', '-t', 'location-docker.pkg.dev/project-id/repository/image', '--build-arg=JAR_FILE=build/libs/build-artifact', '.'] images: ['location-docker.pkg.dev/project-id/repository/image']
각 항목의 의미는 다음과 같습니다.
- location: 저장소의 리전 또는 멀티 리전 위치입니다.
- project-id: Google Cloud 프로젝트의 ID
- repository: 저장소 Artifact Registry의 이름입니다.
- image: 컨테이너 이미지의 이름입니다.
- build-artifact: 빌드 단계에서 생성된 JAR 파일의 이름입니다.
빌드 시작: 빌드 구성 파일이 준비되었으면 터미널에 다음 명령어를 입력하여 빌드를 시작합니다.
gcloud builds submit --region=REGION --config config-file-path source-directory
각 항목의 의미는 다음과 같습니다.
- config-file-path: 빌드 구성 파일의 경로입니다. 이 예시에서 빌드 구성 파일 이름은
cloudbuild.yaml
입니다. - source-directory: 소스 코드의 경로 또는 URL입니다.
REGION
: 지원되는 빌드 리전 중 하나입니다.
gcloud builds submit
명령어에서 config-file-path와 source-directory를 지정하지 않으면 Cloud Build는 구성 파일과 소스 코드가 현재 작업 중인 디렉터리에 있다고 간주합니다.빌드가 완료되면 Artifact Registry에서 저장소 세부정보를 확인할 수 있습니다.
또한 빌드 출처 메타데이터를 확인하고 출처를 검증할 수 있습니다.
- config-file-path: 빌드 구성 파일의 경로입니다. 이 예시에서 빌드 구성 파일 이름은
코드 예
다음은 자바 앱 빌드를 위해 사용할 수 있는 예시 저장소입니다. 이러한 각 저장소에는 샘플 애플리케이션과 이 애플리케이션을 빌드하고 테스트하기 위한 빌드 구성 파일이 포함되어 있습니다.
- maven-example: 자바 앱과 이 앱을
mvn
로 빌드하고 테스트하기 위한 빌드 구성 파일 예시입니다. - gradle-example: 자바 앱과 이 앱을
gradle
로 빌드하고 테스트하기 위한 빌드 구성 파일 예시입니다.
다음 단계
- 빌드 결과를 확인하는 방법 알아보기
- 빌드 보호 방법 알아보기
- 독립형 자바 애플리케이션을 빌드하는 방법을 알아보기
- Cloud Run에서 애플리케이션 배포 방법 알아보기
- GKE에서 애플리케이션 배포 방법 알아보기
- 빌드 오류 문제 해결 방법 알아보기