솔루션

풀 리퀘스트마다 미리 보기 데이터베이스

풀 리퀘스트가 열리면 데이터베이스 브랜치를 만들고, 닫히면 삭제하세요. 각 미리 보기는 실제 데이터에서 시작해 전용 컴퓨트에서 실행되므로 마이그레이션과 테스트가 기본 브랜치에 영향을 주지 않습니다.

작동 방식

  1. 01

    풀 리퀘스트가 열리면 브랜치 만들기

    CI 작업이 API 키로 Open API를 호출해 기본 브랜치에서 브랜치를 만듭니다. 브랜치는 부모 브랜치를 쓰기 시 복사 방식으로 분기한 것이며, 데이터베이스 크기와 상관없이 몇 초 안에 준비됩니다.

    curl -X POST "https://relyt.one/api/v1/projects/$PROJECT_ID/branches" \
      -H "Authorization: Bearer $RELYT_API_KEY" \
      -H "Content-Type: application/json" \
      -d "{\"name\":\"pr-$PR_NUMBER\",\"parentBranchSlug\":\"$MAIN_BRANCH_SLUG\"}"
  2. 02

    미리 보기를 브랜치에 연결하기

    브랜치마다 전용 기본 컴퓨트가 있습니다. 프로젝트의 브랜치 목록을 조회해 새 컴퓨트의 상태가 READY가 될 때까지 기다린 다음, 그 host를 미리 보기의 마이그레이션, 테스트, 앱에 사용하세요.

    curl "https://relyt.one/api/v1/projects/$PROJECT_ID/branches" \
      -H "Authorization: Bearer $RELYT_API_KEY"
  3. 03

    풀 리퀘스트가 닫히면 삭제하기

    한 번 더 호출하면 브랜치와 그 컴퓨트가 삭제됩니다. 기본 브랜치는 바뀌지 않습니다.

    curl -X DELETE "https://relyt.one/api/v1/projects/$PROJECT_ID/branches/$BRANCH_SLUG" \
      -H "Authorization: Bearer $RELYT_API_KEY"

지금 바로 쓸 수 있는 기능

  • 픽스처가 아닌 실제 데이터

    브랜치는 부모 브랜치의 전체 데이터를 가진 상태로 시작합니다. 바뀌지 않은 데이터는 부모와 공유하므로 미리 보기에서 생긴 변경분만 새 스토리지를 사용합니다.

  • 전용 컴퓨트

    미리 보기의 쿼리는 기본 브랜치의 컴퓨트가 아니라 해당 브랜치의 컴퓨트에서 실행됩니다. 유휴 컴퓨트는 일시 중지되었다가 다음 연결 시 다시 시작될 수 있으며, 데이터에는 영향이 없습니다.

  • 어떤 CI에서든 스크립트로

    REST Open API와 API 키로 브랜치를 만들고, 조회하고, 이름을 바꾸고, 삭제할 수 있습니다. 브랜치 이름은 프로젝트 안에서 고유하므로 같은 풀 리퀘스트의 작업이 두 번 실행되면 두 번째는 409를 받고 브랜치가 하나 더 생기지 않습니다.

알아 둘 점

  • Relyt One은 저장소에 아무것도 설치하지 않습니다. 호출은 GitHub Actions 작업 같은 사용자의 CI 워크플로에서 실행되며, API 키는 시크릿으로 저장합니다.
  • 하위 브랜치가 남아 있는 브랜치는 삭제할 수 없고, 기본 브랜치는 아예 삭제할 수 없습니다. 미리 보기는 기본 브랜치에서 만들고, 부모 브랜치보다 먼저 삭제하세요.

다른 솔루션

무료 요금제로 사용해 보세요.

GitHub 또는 Google로 로그인하고 프로젝트와 API 키를 만든 다음 위의 호출을 실행하세요. 신용카드는 필요하지 않습니다.