SuperRepo의 개발, 빌드와 배포
SuperRepo의 개발은 로컬 미리보기에서, 빌드는 재현 가능한 아티팩트 생성으로, 배포는 Marketplace 제품 설치로 구분합니다. Beta 기능이며 사용할 수 있는 컴포넌트와 동작이 바뀔 수 있습니다.
로컬 미리보기
Foundry CLI는 로컬에 여러 서버를 실행합니다. Embedded Ontology는 플랫폼 온톨로지의 일부 동작을 로컬에서 근사하며, 쿼리 및 함수 기반 액션을 언어별 함수 미리보기 런타임으로 전달합니다. 프런트엔드도 로컬에서 호스팅되어 이 서버들을 사용합니다.
이는 실제 플랫폼 인스턴스의 온톨로지 데이터를 그대로 복제하는 실행이 아닙니다. seed 데이터와 로컬 액션으로 만든 객체를 사용하며 원격 플랫폼 API 프록시를 별도로 켠 경로는 실제 인스턴스에 요청합니다.
Ontology-as-code
Ontology-as-code는 객체 유형, 인터페이스, 액션 등의 정의를 TypeScript 코드로 관리합니다. 배포하면 실제 플랫폼 엔터티로 구체화됩니다. 코드 정의가 기준이므로 해당 엔터티의 변경은 코드에서 관리해야 합니다.
정의가 바뀌면 로컬 서버가 감지하여 OSDK 바인딩을 다시 생성합니다. 함수와 프런트엔드는 같은 바인딩을 사용합니다.
기존 온톨로지 엔터티는 foundry import ontology로 가져올 수 있습니다. Ontology Manager에서 만든 유형을 다시 정의할 필요가 없습니다. 가져오기는 OSDK 및 Ontology-as-code 타입을 생성하고 메타데이터를 lock 파일에 기록합니다. 코드 생성이 이 파일에 의존하므로 저장소에 커밋해야 합니다.
foundry.yml
저장소 루트의 foundry.yml은 CLI가 컴포넌트를 발견하는 기준입니다. 다음은 기본 구성 형식의 예입니다. 버전, 이름 공간과 Maven 좌표는 예시 값이며 템플릿 및 자신의 제품에 맞춥니다.
minCliVersion: "0.196.0"
functionsTypescriptRuntimeVersion: "0.123.0"
components:
- type: ONTOLOGY
path: ./ontology
- type: TYPESCRIPT_FUNCTIONS
path: ./functions/typescript-functions
- type: APP
path: ./app
imports:
- ontology: ontology/external-imports/ontology-full-metadata.json
bundle:
name: "product"
description: ""
mavenCoordinate: "com.palantir.example:product"
installMode: SINGLETON
osdkOutput: ontology/osdk-output
apiNamespace: com.palantir.example
components는 유형과 경로, imports는 외부 온톨로지 메타데이터, osdkOutput은 생성 SDK 위치를 정합니다. bundle은 Marketplace 제품의 이름, 설명, Maven 좌표와 설치 모드를 정합니다. minCliVersion과 functionsTypescriptRuntimeVersion은 각각 CLI 및 함수 런타임의 버전 설정입니다.
빌드와 CI
컴포넌트별 빌드 결과를 한 재현 가능한 아티팩트로 묶습니다. 기본 템플릿이 선택한 빌드 도구를 쓰거나 다른 빌드 시스템에서 같은 CLI 명령과 의존 순서를 구성할 수 있습니다.
CI에서는 embedded Ontology를 이용한 통합 테스트나 코드 정의의 명명 규칙과 설계 패턴을 확인하는 온톨로지 linter를 실행할 수 있습니다. 로컬 동작과 실제 플랫폼의 지원 범위는 별도로 확인해야 합니다.
한 제품의 컴포넌트 빌드가 끝나면 다음 명령으로 최종 번들을 만듭니다. PROJECT_VERSION에는 실제 SemVer 릴리스 값을 제공합니다.
: "${PROJECT_VERSION:?Marketplace 제품의 SemVer가 필요합니다}"
foundry bundle --project-version "$PROJECT_VERSION"
이 값이 Marketplace 제품 버전이 됩니다. Foundry 안에서는 SemVer 태그를 붙인 커밋이 제품 버전으로 릴리스되며 Git 태그를 --project-version으로 전달합니다. 여러 제품은 product와 store의 두 단계 번들을 사용합니다.
배포 설정과 설치
foundry deploy는 번들을 업로드하고 환경 설정에 따라 Marketplace에 설치합니다. 기본 환경 파일은 env.yml이며 다른 파일은 --env-file-path로 지정합니다. foundry deploy configure는 이 파일을 대화형으로 만듭니다.
다음은 가상 보안 표지 ID, 웹 도메인과 스토어 RID를 사용한 환경 파일 예입니다.
input_mappings:
organizationInput:
type: markings
markings:
markingIds:
- 12345678-1234-5678-1234-567812345678
stableId: null
websiteSubdomain:
type: parameter
parameter:
value:
type: stringValue
stringValue: my-site.example.palantirfoundry.com
# Optional target location config
store_rid: ri.marketplace.main.local.12345678-1234-5678-1234-567812345678
input_mappings는 제품이 요구하는 입력을 실제 설치 값에 연결합니다. store_rid는 선택한 대상 스토어입니다. 설정을 자동화하면 같은 번들을 여러 플랫폼 인스턴스에 각 환경의 입력으로 설치할 수 있습니다.
소스가 Foundry에 있으면 태그에 따라 Foundry CI가 빌드 및 배포합니다. 외부에 있으면 터미널이나 외부 CI에서 CLI를 실행합니다. 두 경로의 절차는 첫 배포를 따릅니다.