자바 애플리케이션 빌드

이 페이지에서는 Cloud Build를 사용하여 자바 기반 애플리케이션을 빌드하고 테스트하는 방법을 설명합니다. Cloud Build를 처음 사용하는 경우 Cloud Build 빠른 시작을 참조하세요.

시작하기 전에

maven 또는 gradle 이미지 사용

Docker Hub에서 maven 이미지 또는 gradle 이미지를 사용하여 자바 애플리케이션을 빌드하도록 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-jdk-8
    entrypoint: mvn
    args: ['--version']

gradle

  steps:
  - name: gradle:5.6.2-jdk8
    entrypoint: gradle
    args: ['--version']

Java 빌드 구성

  1. 프로젝트 루트 디렉터리에 cloudbuild.yaml이라는 빌드 구성 파일을 만듭니다.

  2. 테스트 실행: mavengradle은 종속 항목을 다운로드하고, 애플리케이션을 빌드하고, 소스 코드에 지정된 모든 테스트를 실행하는 maven testgradle test를 제공합니다. 빌드 단계의 args 필드는 인수 목록을 가져와서 name 필드로 참조되는 이미지에 전달합니다.

    빌드 구성 파일에서 testargs 필드에 추가하여 mavengradle 내에서 test를 호출합니다.

    maven

     steps:
     - name: maven:3-jdk-8
       entrypoint: mvn
       args: ['test']
    

    gradle

     steps:
     - name: gradle:5.6.2-jdk8
       entrypoint: gradle
       args: ['test']
    
  3. 패키지 애플리케이션: maven 이미지에 대해 JAR 파일에 애플리케이션을 패키지화하려면 args 필드에 package 명령어를 지정합니다. package 명령어는 /workspace/target/에 JAR 파일을 빌드합니다.

    gradle 이미지에 대해 JAR 파일에 애플리케이션을 패키지화하려면 args 필드에 assemble 명령어를 지정합니다. assemble 명령어는 workspace/build/libs에 JAR 파일을 빌드합니다.

    다음 빌드 단계는 자바 애플리케이션을 패키지화합니다.

    maven

     steps:
     - name: maven:3-jdk-8
       entrypoint: mvn
       args: ['package','-Dmaven.test.skip=true']
    

    gradle

    steps:
    - name: gradle:5.6.2-jdk8
      entrypoint: gradle
      args: ['assemble']
    
  4. 애플리케이션 컨테이너화: Cloud Build는 자바 애플리케이션을 컨테이너화하기 위해 사용할 수 있는 사전 빌드된 Docker 이미지를 제공합니다. 자바 애플리케이션을 컨테이너화하려면 빌드 구성 파일에서 다음 안내를 따릅니다.

    • name 필드를 추가하고 Container Registrygcr.io/cloud-builders/docker에 저장된 사전 빌드된 Docker 이미지를 지정합니다.
    • args 필드를 추가하고 build 인수, 빌드할 컨테이너 이미지 이름, --build-arg의 빌드 아티팩트 경로를 지정합니다.
    • images 필드를 추가하여 빌드된 이미지를 Container Registry에 푸시합니다.

    다음 빌드 단계는 애플리케이션을 컨테이너화하고 이미지를 Container Registry에 푸시합니다.

    maven

    steps:
    - name: gcr.io/cloud-builders/docker
      args: ['build', '-t', 'gcr.io/project-id/image-name', '--build-arg=JAR_FILE=target/build-artifact', '.']
    images: ['gcr.io/project-id/image-name']
    

    gradle

    steps:
    - name: gcr.io/cloud-builders/docker
      args: ['build', '-t', 'gcr.io/project-id/image-name', '--build-arg=JAR_FILE=build/libs/build-artifact', '.']
    images: ['gcr.io/project-id/image-name']
    

    각 항목의 의미는 다음과 같습니다.

    • project-id:클라우드 프로젝트의 ID입니다.
    • image-name: 컨테이너 이미지의 이름입니다.
    • build-artifact: 빌드 단계에서 생성된 JAR 파일의 이름입니다.
  5. 빌드 시작: 빌드 구성 파일이 준비되었으면 터미널에 다음 명령어를 입력하여 빌드를 시작합니다.

    gcloud builds submit --config config-file-path source-directory
    

    각 항목의 의미는 다음과 같습니다.

    • config-file-path: 빌드 구성 파일의 경로입니다. 이 예시에서 빌드 구성 파일 이름은 cloudbuild.yaml입니다.
    • source-directory: 소스 코드의 경로 또는 URL입니다.

    gcloud builds submit 명령어에서 config-file-pathsource-directory를 지정하지 않으면 Cloud Build는 구성 파일과 소스 코드가 현재 작업 중인 디렉터리에 있다고 간주합니다.

코드 예시

다음은 자바 앱 빌드를 위해 사용할 수 있는 예시 저장소입니다. 이러한 각 저장소에는 샘플 애플리케이션과 이 애플리케이션을 빌드하고 테스트하기 위한 빌드 구성 파일이 포함되어 있습니다.

  • maven-example: 자바 앱과 이 앱을 mvn로 빌드하고 테스트하기 위한 빌드 구성 파일 예시입니다.
  • gradle-example: 자바 앱과 이 앱을 gradle로 빌드하고 테스트하기 위한 빌드 구성 파일 예시입니다.

다음 단계