Przejdź do głównej treści

CLI i wdrażanie konfiguracji

CLI tworzy, weryfikuje i wdraża niezmienne wersje konfiguracji ChattyBox, a także je promuje i przywraca. Tokeny wdrażania są przypisane do jednego projektu i wybranych środowisk, dzięki czemu ten sam proces sprawdza się w lokalnym środowisku programistycznym i w CI.

Tworzenie konfiguracji

bunx @openstaticfish/chattybox-cli init

To polecenie tworzy plik chattybox.config.json:

{
"schemaVersion": "1",
"assistant": {
"name": "Support"
},
"knowledge": {
"sources": [
{
"type": "website",
"url": "https://example.com"
}
]
},
"widget": {
"enabled": true
}
}

Użyj niestandardowej ścieżki, gdy konfiguracja ma znajdować się w podkatalogu:

bunx @openstaticfish/chattybox-cli init config/chattybox.config.json

Weryfikacja lokalna lub w CI

bunx @openstaticfish/chattybox-cli validate
bunx @openstaticfish/chattybox-cli validate config/chattybox.config.json

Weryfikacja sprawdza schemat, wymaganą nazwę asystenta, obsługiwane typy źródeł, adresy URL HTTP źródeł, dodatnie limity stron i kolory widżetu. Pomyślna weryfikacja nie wdraża ani nie modyfikuje stanu zdalnego.

Tworzenie tokenu wdrażania

Otwórz kartę Settings projektu, znajdź Config deployment tokens i utwórz token dla środowisk, które może zmieniać Twój proces. Skopiuj go od razu — ChattyBox przechowuje tylko jego skrót i nie może wyświetlić go ponownie.

Ustaw token i adres URL API widżetu z karty Embed projektu:

export CHATTYBOX_DEPLOY_TOKEN='cb_cfg_v1_...'
export CHATTYBOX_API_URL='https://your-deployment.convex.site/chat'

Nigdy nie zatwierdzaj tokenu w repozytorium. Przechowuj go w zaszyfrowanym magazynie sekretów dostawcy CI.

Po zweryfikowaniu procesu wdrażania włącz Config-as-code lock w tej samej sekcji ustawień. Blokada wyłącza zmiany konfiguracji i korpusu z poziomu panelu, więc środowisko wykonawcze mogą zmieniać tylko tokeny wdrażania z odpowiednim zakresem. Tworzenie i unieważnianie tokenów pozostaje dostępne, jeśli dane uwierzytelniające CI wymagają rotacji.

Wdrażanie konfiguracji

Wdrożenie tworzy niezmienną wersję i promuje ją do wybranego środowiska:

bunx @openstaticfish/chattybox-cli deploy --environment preview
bunx @openstaticfish/chattybox-cli deploy --environment production

Promocje do development i preview są rejestrowane do wglądu. Promocje do production atomowo stosują w aktywnym projekcie prompt asystenta, odpowiedź awaryjną, ustawienia widżetu, ustawienia regionalne i źródło witryny. Konfiguracja produkcyjna musi zawierać dokładnie jedno źródło witryny. Wdrożenie umieszcza w kolejce skanowanie powiązane z wersją, które zostanie uruchomione po zakończeniu wcześniejszych zadań. Następnie zastępuje poprzedni korpus i ponownie generuje embeddingi. Obecne środowisko wykonawcze odrzuca konfiguracje z wieloma źródłami.

Użyj --json w automatyzacji, aby otrzymać wersję, środowisko, status aplikacji i identyfikator zadania skanowania w postaci danych strukturalnych.

Status, promocja i rollback

bunx @openstaticfish/chattybox-cli status --environment production

bunx @openstaticfish/chattybox-cli promote \
--version '<config-version-id>' \
--environment production

bunx @openstaticfish/chattybox-cli rollback \
--version '<known-good-config-version-id>' \
--environment production

Rollback promuje i ponownie stosuje starszą niezmienną wersję; nigdy nie przepisuje historii wdrożeń. Konfiguracja zostaje przywrócona natychmiast, a wszelkie wymagane odświeżenie treści jest kontynuowane asynchronicznie.

Przepływy pracy CI/CD

Dodaj CHATTYBOX_DEPLOY_TOKEN jako zaszyfrowany sekret ograniczony do produkcji u dostawcy CI. Dodaj CHATTYBOX_API_URL jako sekret lub zmienną, używając adresu URL API widżetu z karty Embed projektu. Uruchamiaj walidację dla pull requestów, ale ogranicz wdrożenia produkcyjne do chronionej gałęzi domyślnej lub zatwierdzonego środowiska wdrożeniowego.

GitHub Actions

name: Deploy ChattyBox configuration

on:
pull_request:
push:
branches: [main]

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- run: bunx @openstaticfish/chattybox-cli validate

deploy:
if: github.event_name == 'push'
needs: validate
runs-on: ubuntu-latest
environment: production
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
- name: Validate and deploy
env:
CHATTYBOX_DEPLOY_TOKEN: ${{ secrets.CHATTYBOX_DEPLOY_TOKEN }}
CHATTYBOX_API_URL: ${{ vars.CHATTYBOX_API_URL }}
run: |
bunx @openstaticfish/chattybox-cli validate
bunx @openstaticfish/chattybox-cli deploy --environment production --json

Użyj sekretu produkcyjnego przypisanego do środowiska i wymagaj zatwierdzenia wdrożenia, jeśli Twoje repozytorium to obsługuje. CLI zapisuje typowe zmienne CI dotyczące commita i gałęzi razem z niezmienną wersją.

GitLab CI/CD

Przechowuj obie wartości w Settings → CI/CD → Variables. Chroń token wdrożenia, zamaskuj go i ogranicz go do środowiska production.

.gitlab-ci.yml
image: oven/bun:1

validate_chattybox:
stage: test
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
script:
- bunx @openstaticfish/chattybox-cli validate

deploy_chattybox:
stage: deploy
environment: production
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
script:
- bunx @openstaticfish/chattybox-cli validate
- bunx @openstaticfish/chattybox-cli deploy --environment production --json

GitLab automatycznie udostępnia zadaniu CHATTYBOX_DEPLOY_TOKEN i CHATTYBOX_API_URL, używając ich nazw zmiennych. Użyj chronionej gałęzi domyślnej, aby chronione zmienne nie były dostępne dla niezaufanych gałęzi.

Bitbucket Pipelines

Dodaj obie wartości jako zmienne wdrożeniowe w Repository settings → Pipelines → Deployments → Production. Oznacz token wdrożenia jako zabezpieczony.

bitbucket-pipelines.yml
image: oven/bun:1

pipelines:
pull-requests:
'**':
- step:
name: Validate ChattyBox configuration
script:
- bunx @openstaticfish/chattybox-cli validate
branches:
main:
- step:
name: Deploy ChattyBox configuration
deployment: Production
script:
- bunx @openstaticfish/chattybox-cli validate
- bunx @openstaticfish/chattybox-cli deploy --environment production --json

Zastąp main, jeśli Twoja gałąź domyślna ma inną nazwę. Bitbucket wstrzykuje zmienne wdrożeniowe tylko do kroków powiązanych z tym środowiskiem wdrożeniowym.

Sekcje konfiguracji

SekcjaPrzeznaczenie
schemaVersionWybiera publiczny kontrakt konfiguracji. Obecnie obsługiwana jest wersja 1.
assistantOkreśla nazwę asystenta oraz opcjonalnie jego profil promptu i prompt systemowy.
knowledge.sourcesDeklaruje źródła internetowe oraz opcjonalne wzorce uwzględniania i wykluczania.
runtimeZawiera domyślne ustawienia środowiska wykonawczego, takie jak locale.
widgetOpisuje opcjonalne ustawienia wyglądu hostowanego widżetu.

Typowany pomocnik konfiguracji

Zainstaluj pakiet konfiguracyjny, jeśli tworzysz osobne narzędzia TypeScript korzystające ze schematu:

bun add -d @openstaticfish/chattybox-config
import { defineConfig } from '@openstaticfish/chattybox-config';

const config = defineConfig({
schemaVersion: '1',
assistant: { name: 'Support' },
knowledge: {
sources: [{ type: 'website', url: 'https://docs.example.com' }],
},
widget: { enabled: true },
});

Samo CLI odczytuje pliki JSON. defineConfig() jest przeznaczone dla typowanych aplikacji lub narzędzi kompilacji; nie umożliwia CLI bezpośredniego wczytywania plików TypeScript.

Aby już dziś uzyskać działającą integrację produkcyjną, użyj hostowanego widżetu lub zbuduj własny interfejs za pomocą SDK JavaScript.

We use optional analytics and tag-management tools to understand site use. Choose whether to allow PostHog and Google Tag Manager. Turning analytics off reloads this page so the change takes effect cleanly. Essential site functionality and error monitoring are not controlled by this choice. Read our privacy policy.