You can use the CLI to sync custom hubs. There is no need to rebuild the Docker image as they are loaded directly from npm.

How It Works

Use the CLI to sync items from packages/hubs/custom/ to instances. In production, FLO acts as an npm registry, storing all hub versions. The CLI scans the directory for package.json files, checking the name and version of each hub. If a hub isn’t uploaded, it packages and uploads it via the API.

Usage

To use the CLI, follow these steps:
  1. Generate an API Key from the Admin Interface. Go to Settings and generate the API Key.
  2. Install the CLI by cloning the repository.
  3. Run the following command, replacing API_KEY with your generated API Key and INSTANCE_URL with your instance URL:
FLO_API_KEY=your_api_key_here bun run sync-hubs -- --apiUrl https://INSTANCE_URL/api

Developer Workflow

  1. Developers create and modify the hubs offline.
  2. Increment the hub version in their corresponding package.json. For more information, refer to the hub versioning documentation.
  3. Open a pull request towards the main branch.
  4. Once the pull request is merged to the main branch, manually run the CLI or use a GitHub/GitLab Action to trigger the synchronization process.

GitHub Action

name: Sync Custom Hub

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  sync-hubs:
    runs-on: ubuntu-latest

    steps:
      # Step 1: Check out the repository code with full history
      - name: Check out repository code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      # Step 2: Set up Bun
      - name: Set up Bun
        uses: oven-sh/setup-bun@v1
        with:
          bun-version: latest

      # Step 3: Cache Bun dependencies
      - name: Cache Bun dependencies
        uses: actions/cache@v3
        with:
          path: ~/.bun/install/cache
          key: bun-${{ hashFiles('bun.lockb') }}
          restore-keys: |
            bun-

      # Step 4: Install dependencies using Bun
      - name: Install dependencies
        run: bun install --no-save

      # Step 5: Sync Custom Hub
      - name: Sync Custom Hub
        env:
          FLO_API_KEY: ${{ secrets.FLO_API_KEY }}
        run: bun run sync-hubs -- --apiUrl ${{ secrets.INSTANCE_URL }}/api