부록 A. S2I 스크립트 및 Maven
OpenShift용 Red Hat JBoss Web Server 이미지에는 S2I 스크립트 및 Maven이 포함되어 있습니다.
A.1. Maven 아티팩트 저장소 미러 및 OpenShift용 JWS
Maven 리포지토리에는 JAR(프로젝트 Java 아카이브) 파일, 라이브러리 JAR 파일, 플러그인 또는 기타 프로젝트별 아티팩트와 같은 빌드 아티팩트 및 종속 항목이 있습니다. Maven 리포지토리는 S2I(Source-to-Image) 빌드를 수행하는 동안 아티팩트를 다운로드할 수 있는 위치도 정의합니다. Maven Central 리포지토리 를 사용하는 것 외에도 일부 조직에서는 로컬 사용자 지정 리포지토리(mirror)도 배포합니다.
로컬 미러는 다음과 같은 이점을 제공합니다.
- 지리적으로 더 빠르고 빠르게 동기화된 미러 사용 가능
- 리포지토리 콘텐츠 제어 강화
- 공용 서버 및 리포지토리에 의존하지 않고 다양한 팀(개발자 및 연속 통합(CI)에서 아티팩트를 공유할 수 있음
- 빌드 시간 개선
Maven 리포지토리 관리자는 미러에 대한 로컬 캐시 역할을 할 수 있습니다. 리포지토리 관리자가 이미 배포되어 지정된 URL 위치에서 외부에서 연결할 수 있는 경우 S2I 빌드에서 이 리포지토리를 사용할 수 있습니다. 애플리케이션의 빌드 구성에 MAVEN_MIRROR_URL
환경 변수를 추가하여 내부 Maven 리포지토리를 사용할 수 있습니다.
A.1.1. 새 빌드 구성에 내부 Maven 리포지토리 사용
oc new-app
명령 또는 oc new-build
명령으로 --build-env
옵션을 지정하여 애플리케이션의 새 빌드 구성에 MAVEN_MIRROR_URL
환경 변수를 추가할 수 있습니다.
프로세스
다음 명령을 실행합니다.
$ oc new-app \ https://github.com/web-servers/tomcat-websocket-chat-quickstart.git#main \ --image-stream=jboss-webserver61-openjdk17-tomcat10-openshift-ubi8:latest \ --context-dir='tomcat-websocket-chat' \ --build-env MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/ \ --name=jws-wsch-app
참고이전 명령은 리포지토리 관리자가 이미 배포되어 있으며
http://10.0.0.1:8080/repository/internal/
에서 연결할 수 있다고 가정합니다.
A.1.2. 기존 빌드 구성에 내부 Maven 리포지토리 사용
oc set env
명령으로 빌드 구성의 이름을 지정하여 MAVEN_MIRROR_URL
환경 변수를 애플리케이션의 기존 빌드 구성에 추가할 수 있습니다.
프로세스
MAVEN_MIRROR_URL
변수가 필요한 빌드 구성을 식별합니다.$ oc get bc -o name
이전 명령은 다음 유형의 출력을 생성합니다.
buildconfig/jws
참고이전 예에서 jws는 빌드 구성의 이름입니다.
MAVEN_MIRROR_URL
환경 변수를buildconfig/jws
에 추가합니다.$ oc set env bc/jws MAVEN_MIRROR_URL="http://10.0.0.1:8080/repository/internal/" buildconfig "jws" updated
빌드 구성이 업데이트되었는지 확인합니다.
$ oc set env bc/jws --list # buildconfigs jws MAVEN_MIRROR_URL=http://10.0.0.1:8080/repository/internal/
-
oc start-build
를 사용하여 애플리케이션의 새 빌드 예약
애플리케이션 빌드 프로세스 중에 Maven 종속성은 기본 공용 리포지토리가 아닌 리포지토리 관리자에서 다운로드합니다. 빌드 프로세스가 완료되면 미러에는 빌드 프로세스 중에 검색 및 사용되는 모든 종속 항목이 포함됩니다.