확장 프로그램 게시

이 페이지에서는 Extensions Hub에 확장 프로그램을 게시하는 방법을 설명합니다.

시작하기 전에

확장 프로그램을 게시하려면 우선 확장 프로그램 게시자로 등록해야 합니다.

검증 가능한 소스

Extensions Hub에 게시된 모든 확장 프로그램에는 공개적으로 검증 가능한 소스가 있어야 합니다. 확장 프로그램 소스 코드를 Extensions Hub에 직접 업로드하는 대신 소스 위치를 지정하면 Extensions Hub에서 이를 다운로드하여 빌드합니다.

현재 이것은 확장 프로그램 소스 코드를 공개 GitHub 저장소에서 사용할 수 있도록 하는 것을 의미합니다.

검증 가능한 소스에서 업로드하면 다음과 같은 이점이 있습니다.

  • 사용자는 설치될 특정 확장 프로그램 버전의 소스 코드를 검사할 수 있습니다.
  • 예를 들어 진행 중인 작업 또는 개발 중에 남은 스트레이 파일이 아니라 업로드하려는 항목만 업로드할 수 있습니다.

권장 개발 주기

Firebase Extensions 개발 도구는 확장 프로그램의 출시 전 버전 업로드를 지원하므로 최종적으로 출시될 환경과 동일한 환경에서 확장 프로그램 및 확장 프로그램 설치 프로세스를 쉽게 테스트할 수 있습니다.

이 기능을 통해 다음과 같은 개발 주기를 만들 수 있습니다.

  1. Firebase 에뮬레이터 도구 모음을 사용하여 확장 프로그램을 개발하고 빠르게 반복합니다.

  2. 확장 프로그램을 로컬 소스에서 설치하여 실제 프로젝트에서 테스트합니다.

    firebase ext:install /path/to/extension
    firebase deploy --only extensions
    
  3. 출시 전 버전을 Extensions Hub에 업로드합니다(아래 참조). 광범위한 테스트를 위해 설치 링크를 배포하고 필요에 따라 출시 전 버전을 추가로 업로드하여 반복합니다.

  4. 최종 안정화 버전을 Extensions Hub(아래 참조)에 업로드하고 검토를 위해 제출합니다. 확장 프로그램이 검토를 통과하면 Extensions Hub에 게시됩니다.

  5. extension.yaml에서 버전 번호를 증가시키고 다음 확장 프로그램 버전에서 이 주기를 반복합니다.

새 확장 프로그램 업로드

확장 프로그램을 처음 업로드하려면 다음 단계를 따르세요.

  1. 선택사항: 공개 GitHub 저장소에 코드를 커밋합니다.

  2. Firebase CLI의 ext:dev:upload 명령어를 실행합니다.

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    로컬 소스

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local
    

    명령어 호출에서 다음을 지정합니다.

    • 등록한 게시자 ID.

    • 확장 프로그램을 식별하는 ID 문자열. 확장 프로그램의 이름을 firebase-product-description-of-tasks-performed 형식으로 지정합니다. 예를 들면 firestore-bigquery-export입니다.

    명령어를 실행하면 추가 정보를 입력하라는 메시지가 표시됩니다.

    • GitHub에서 업로드하는 경우:

      • GitHub의 확장 프로그램 저장소 URL입니다. 각 확장 프로그램에 고유한 루트가 있는 한 저장소에 여러 확장 프로그램이 포함될 수 있습니다.

        새 확장 프로그램을 처음 업로드하면 저장소가 확장 프로그램의 표준 소스로 등록됩니다.

      • 확장 프로그램이 포함된 저장소의 디렉터리입니다.

      • 확장 프로그램 버전 소스를 빌드하려는 커밋의 Git 참조입니다. 커밋 해시, 태그 또는 브랜치 이름일 수 있습니다.

    • 업로드하는 버전의 출시 단계입니다.

      alpha, beta, rc(출시 후보) 단계는 테스터가 설치할 출시 전 버전을 업로드하는 데 사용됩니다. 새 확장 프로그램을 처음 업로드할 때는 이 단계 중 하나를 사용합니다.

      stable 단계는 Extensions Hub에 게시되는 공개 출시에 사용됩니다. stable 출시 버전을 업로드하면 검토가 자동으로 시작되며 통과되면 확장 프로그램이 게시됩니다.

    버전 번호를 지정하지 않습니다. 이 값은 extension.yaml 파일에서 가져옵니다. 출시 전 확장 프로그램 버전을 업로드하면 해당 단계와 업로드 번호가 버전에 추가됩니다. 예를 들어 extension.yaml이 버전 1.0.1을 지정하고 개발자가 출시 후보를 업로드하면 버전 1.0.1-rc.0이 됩니다. 동일한 버전의 다른 출시 후보를 업로드하면 자동으로 수가 증가하여 1.0.1-rc.1 등이 됩니다.

이제 확장 프로그램의 출시 전 버전을 업로드했으므로 테스트를 위해 다른 사용자와 공유할 수 있습니다. 사용자는 다음 두 가지 방법 중 하나로 확장 프로그램을 설치할 수 있습니다.

  • 콘솔 사용: 사용자는 다음 형식의 링크를 클릭하여 확장 프로그램을 설치할 수 있습니다.

    https://console.firebase.google.com/project/_/extensions/install?ref=your_publisher_id/your_extension_id@version

    테스터와 직접 링크를 공유할 수 있습니다.

  • CLI 사용: 사용자는 확장 프로그램 ID 문자열을 ext:install 명령어에 전달하여 확장 프로그램을 설치할 수 있습니다.

    firebase ext:install your_publisher_id/your_extension_id@version \
        --project=destination_project_id
    

업데이트된 버전 업로드

확장 프로그램의 첫 번째 버전을 업로드한 후 업데이트를 업로드하여 문제를 해결하거나 기능을 추가하거나 출시 단계를 높일 수 있습니다. 새 버전을 업로드하면 이전 버전의 확장 프로그램을 설치한 사용자에게 Firebase Console에서 업그레이드하라는 메시지가 표시됩니다.

업데이트를 업로드하려면 다음 안내를 따르세요.

  1. 선택사항: 공개 Git 저장소에 코드를 커밋합니다.

  2. Firebase CLI의 ext:dev:upload 명령어를 실행합니다.

    GitHub

    firebase ext:dev:upload your_publisher_id/your_extension_id
    

    GitHub 저장소 또는 확장 프로그램 루트 디렉터리는 이미 확장 프로그램에 구성되어 있으므로 이번에는 이를 지정하라는 메시지가 표시되지 않습니다. 이후에 저장소 구조를 리팩터링했거나 새 저장소로 마이그레이션한 경우 명령어 인수 --root--repo를 사용해 변경할 수 있습니다.

    로컬 소스

    cd /path/to/extension
    firebase ext:dev:upload your_publisher_id/your_extension_id --local
    

게시를 위해 확장 프로그램 제출

확장 프로그램을 공개적으로 출시할 준비가 되면 다음 안내를 따르세요.

  1. 공개 Git 저장소에 코드를 커밋합니다. (공개 버전에 필요)

  2. stable을 출시 단계로 지정하여 Firebase CLI의 ext:dev:upload 명령어를 실행합니다.

    firebase ext:dev:upload your_publisher_id/your_extension_id
    
  3. 이전에 확장 프로그램의 버전을 게시한 경우 새로운 안정적인 출시 버전을 업로드하면 검토를 위해 확장 프로그램이 자동으로 제출됩니다.

    확장 프로그램의 첫 번째 안정적인 출시 버전을 업로드한 경우 게시자 대시보드에서 확장 프로그램을 찾고 Extensions Hub에 게시를 클릭합니다.

제출 후 검토가 완료되는 데 며칠 정도 걸릴 수 있습니다. 승인되면 확장 프로그램이 Extensions Hub에 게시됩니다. 거부되는 경우에는 이유를 설명하는 메시지가 표시됩니다. 그러면 보고된 문제를 해결하고 검토를 위해 다시 제출할 수 있습니다.

빠르게 검토하고 첫 번째 시도에서 통과할 가능성을 높이려면 제출하기 전에 다음 사항을 다시 확인하세요.

  • 확장 프로그램과 설치 프로세스를 철저히 테스트했습니다.
  • 문서가 완전하고 정확하며 Firebase Console에서 잘 렌더링됩니다.
  • 내 게시자 이름과 브랜딩이 나를 게시자로 분명하고 정확하게 식별합니다.
  • 확장 프로그램의 이름, 설명, 아이콘에 확장 프로그램의 목적이 분명하고 정확하게 나타납니다.
  • 유용하고 정확한 태그를 적용했습니다.
  • 사용 중인 모든 Google API 및 Google 이외의 API와 확장 프로그램이 내보내는 모든 이벤트 유형을 extension.yaml에 선언했습니다.
  • 확장 프로그램이 작동하는 데 필요한 역할에 대한 액세스만 요청하고 있으며 이러한 액세스 권한이 필요한 이유를 사용자에게 명확하게 설명했습니다.
  • Apache-2.0 약관에 따라 소스 파일에 명확하게 라이선스가 부여됩니다.

업로드 및 게시된 확장 프로그램 관리

업로드된 확장 프로그램 나열

게시자 ID로 업로드한 확장 프로그램을 나열하려면 다음 중 하나를 수행합니다.

게시자 대시보드

게시자 대시보드에서 확인하세요.

Firebase CLI

ext:dev:list 명령어를 실행합니다.

firebase ext:dev:list your_publisher_id

업로드된 확장 프로그램의 사용량 보기

게시자 ID로 업로드한 확장 프로그램의 사용량을 보려면 다음 중 하나를 수행합니다.

게시자 대시보드

게시자 대시보드에는 모든 확장 프로그램의 누적 사용량 측정항목과 각 확장 프로그램의 개별 측정항목이 있습니다.

Firebase CLI

ext:dev:usage 명령어를 실행합니다.

firebase ext:dev:usage your_publisher_id

확장 프로그램 버전 지원 중단

특정 시점이 되면 확장 프로그램의 이전 버전을 지원 중단할 수 있습니다. 예를 들어 중요 버그를 수정하거나 중요한 보안 업데이트와 함께 종속 항목을 업데이트하는 새 버전을 출시하는 경우 신규 사용자가 이전 버전을 설치하지 못하도록 하고 기존 사용자가 버전을 업그레이드하도록 유도하는 것이 중요합니다.

확장 프로그램 버전을 지원 중단하려면 다음 중 하나를 수행합니다.

게시자 대시보드

  1. 게시자 대시보드에서 확장 프로그램을 클릭하여 세부정보 뷰를 엽니다.
  2. 지원 중단할 버전을 선택합니다.
  3. 버전 지원 중단을 클릭합니다.

Firebase CLI

ext:dev:deprecate 명령어를 실행합니다.

firebase ext:dev:deprecate your_publisher_id/your_extension_id versions \
    [--message "deprecation_message"]

단일 버전 또는 버전 범위를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

  • 1.0.2
  • 1.1.0-1.1.7
  • <1.2.0
  • 1.1.*

지원 중단된 확장 프로그램 버전은 Extensions Hub에 나열되지 않으므로 설치할 수 없습니다. 지원 중단된 버전이 설치된 프로젝트의 사용자에게는 업그레이드하라는 메시지가 표시됩니다. 그동안 확장 프로그램을 계속 사용하고 다시 구성할 수 있습니다.

확장 프로그램의 모든 버전이 지원 중단되는 경우 확장 프로그램이 지원 중단된 것으로 간주되어 Extensions Hub에서 삭제됩니다. 지원 중단된 확장 프로그램의 새 버전을 업로드하면 검토가 자동으로 시작되고 승인 시 Extensions Hub에 다시 게시됩니다.

지원 중단을 취소하려면 게시자 대시보드를 사용하거나 Firebase CLI의 ext:dev:undeprecate 명령어를 실행하세요.

firebase ext:dev:undeprecate your_publisher_id/your_extension_id versions

부록: 빌드 오류 문제 해결

확장 프로그램을 업로드하면 먼저 백엔드에서 다음 프로세스를 사용하여 소스 코드를 빌드합니다.

  1. GitHub 저장소를 클론하고 지정된 소스 참조를 확인합니다.

  2. extension.yaml에 지정된 모든 함수 소스 디렉터리에서 npm clean-install을 실행하여 NPM 종속 항목을 설치합니다(Cloud 함수 리소스sourceDirectory 참조).

    다음에 유의하세요.

    • package.json 파일에는 상응하는 package-lock.json 파일이 있어야 합니다. 자세한 내용은 npm-ci를 참조하세요.

    • 설치 후 스크립트는 종속 항목 설치 중에 실행되지 않습니다. 소스 코드 빌드가 설치 후 스크립트에 의존하는 경우 업로드하기 전에 리팩터링합니다.

  3. extension.yaml에 지정된 모든 함수 소스 디렉터리에서 npm run build를 실행하여 코드를 빌드합니다.

공유할 최종 확장 프로그램 패키지에는 확장 프로그램의 루트 디렉터리만 저장됩니다.

확장 프로그램을 업로드하는 동안 빌드 오류가 발생하면 오류가 사라질 때까지 위의 빌드 단계를 최신 디렉터리에 로컬로 재현한 다음 다시 업로드해 보세요.