8장. 빌드
8.1. 빌드 작업 방법
8.1.1. 빌드란 무엇인가?
OpenShift Container Platform의 빌드 는 입력 매개변수를 결과 오브젝트로 변환하는 프로세스입니다. 대부분의 경우 빌드는 소스 코드를 실행 가능한 컨테이너 이미지로 변환하는 데 사용됩니다.
빌드 구성 또는 BuildConfig
는 빌드 전략 및 하나 이상의 소스가 특징입니다. 전략은 앞서 언급한 프로세스를 결정하는 반면 소스는 입력을 제공합니다.
빌드 전략은 다음과 같습니다.
빌드 입력으로 제공할 수 있는 6가지 유형의 소스가 있습니다.
특정 유형의 소스를 고려하거나 무시하고 사용할 방법을 결정하는 것은 각 빌드 전략입니다. 바이너리와 Git은 상호 배타적인 소스 유형입니다. Dockerfile 및 이미지는 자체적으로 사용하거나 Git 또는 Binary와 함께 사용할 수 있습니다. Binary 소스 유형은 시스템에 지정된 방법에 있는 다른 옵션과 고유합니다.
8.1.2. BuildConfig란 무엇입니까?
빌드 구성은 단일 빌드 정의와 새 빌드를 생성해야 하는 시기의 트리거 세트를 설명합니다. 빌드 구성은 BuildConfig
에 의해 정의되는데 BuildConfig는 새 인스턴스를 생성하기 위해 API 서버에 대한 POST에 사용할 수 있는 REST 오브젝트입니다.
OpenShift Container Platform을 사용하여 애플리케이션을 생성하기 위해 선택하는 방법에 따라 BuildConfig
는 일반적으로 웹 콘솔 또는 CLI를 사용하는 경우 자동으로 생성되며 언제든지 편집할 수 있습니다. BuildConfig
를 구성하는 부분과 사용 가능한 옵션을 이해하면 나중에 구성을 수동으로 조정하는 경우 도움이 될 수 있습니다.
다음 예제 BuildConfig
에서는 컨테이너 이미지 태그 또는 소스 코드가 변경될 때마다 새 빌드를 생성합니다.
BuildConfig 오브젝트 정의
kind: "BuildConfig" apiVersion: "v1" metadata: name: "ruby-sample-build" 1 spec: runPolicy: "Serial" 2 triggers: 3 - type: "GitHub" github: secret: "secret101" - type: "Generic" generic: secret: "secret101" - type: "ImageChange" source: 4 git: uri: "https://github.com/openshift/ruby-hello-world" strategy: 5 sourceStrategy: from: kind: "ImageStreamTag" name: "ruby-20-centos7:latest" output: 6 to: kind: "ImageStreamTag" name: "origin-ruby-sample:latest" postCommit: 7 script: "bundle exec rake test"
- 1
- 이 사양은 ruby-sample-build 라는 새
BuildConfig
를 생성합니다. - 2
runPolicy
필드는 이 빌드 구성에서 생성한 빌드를 동시에 실행할 수 있는지 여부를 제어합니다. 기본값은Serial
입니다. 즉, 새 빌드가 동시에 실행되지 않고 순차적으로 실행됩니다.- 3
- 트리거 목록을 지정할 수 있으며 이로 인해 새 빌드가 생성됩니다.
- 4
source
섹션은 빌드의 소스를 정의합니다. 소스 유형에 따라 기본 입력 소스가 결정되는데, 소스 유형은 코드 리포지토리 위치를 가리키는Git
, 인라인 Dockerfile에서 빌드하는Dockerfile
또는 바이너리 페이로드를 허용하는Binary
일 수 있습니다. 한 번에 여러 소스를 사용할 수 있습니다. 자세한 내용은 각 소스 유형에 대한 설명서를 참조하십시오.- 5
strategy
섹션에서는 빌드를 실행하는 데 사용하는 빌드 전략에 대해 설명합니다. 여기에서Source
,Docker
또는Custom
전략을 지정할 수 있습니다. 위의 예에서는 Source-To-Image에서 애플리케이션 빌드에 사용할ruby-20-centos7
컨테이너 이미지를 사용합니다.- 6
- 컨테이너 이미지가 성공적으로 빌드되면
output
섹션에 설명된 리포지토리로 푸시됩니다. - 7
postCommit
섹션에서는 선택적 빌드 후크를 정의합니다.