120 lines
7.9 KiB
Plaintext
120 lines
7.9 KiB
Plaintext
---
|
||
title: Публикация
|
||
description: Распространяйте своё приложение Twenty в маркетплейсе или разверните его для внутреннего использования.
|
||
---
|
||
|
||
<Warning>
|
||
Приложения сейчас проходят альфа-тестирование. Функциональность работает, но продолжает развиваться.
|
||
</Warning>
|
||
|
||
## Обзор
|
||
|
||
После того как ваше приложение [собрано и протестировано локально](/l/ru/developers/extend/apps/building), у вас есть два пути для его распространения:
|
||
|
||
* **Опубликовать в npm** — разместите ваше приложение в маркетплейсе Twenty, чтобы любое рабочее пространство могло его найти и установить.
|
||
* **Отправить tarball** — разверните приложение на конкретном сервере Twenty для внутреннего использования, не делая его общедоступным.
|
||
|
||
## Публикация в npm
|
||
|
||
Публикация в npm делает ваше приложение видимым в маркетплейсе Twenty. Любое рабочее пространство Twenty может просматривать, устанавливать и обновлять приложения из маркетплейса непосредственно из интерфейса.
|
||
|
||
### Требования
|
||
|
||
* Учётная запись [npm](https://www.npmjs.com)
|
||
* Название вашего пакета **должно** использовать префикс `twenty-app-` (например, `twenty-app-postcard-sender`)
|
||
|
||
### Шаги
|
||
|
||
1. **Соберите приложение** — CLI компилирует исходные файлы TypeScript и генерирует манифест приложения:
|
||
|
||
```bash filename="Terminal"
|
||
yarn twenty build
|
||
```
|
||
|
||
2. **Опубликуйте в npm** — отправьте собранный пакет в реестр npm:
|
||
|
||
```bash filename="Terminal"
|
||
npx twenty publish
|
||
```
|
||
|
||
### Автоматическое обнаружение
|
||
|
||
Пакеты с префиксом `twenty-app-` автоматически обнаруживаются каталогом маркетплейса Twenty. После публикации ваше приложение появится в маркетплейсе в течение нескольких минут — ручная регистрация или одобрение не требуются.
|
||
|
||
### Публикация через CI
|
||
|
||
Сгенерированный шаблоном проект включает workflow GitHub Actions, который выполняет публикацию при каждом релизе. Он запускает `app:build`, затем `npm publish --provenance` из результатов сборки:
|
||
|
||
```yaml filename=".github/workflows/publish.yml"
|
||
name: Publish
|
||
on:
|
||
release:
|
||
types: [published]
|
||
|
||
permissions:
|
||
contents: read
|
||
id-token: write
|
||
|
||
jobs:
|
||
publish:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
- uses: actions/setup-node@v4
|
||
with:
|
||
node-version: "24"
|
||
registry-url: https://registry.npmjs.org
|
||
- run: yarn install --immutable
|
||
- run: npx twenty build
|
||
- run: npm publish --provenance --access public
|
||
working-directory: .twenty/output
|
||
env:
|
||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||
```
|
||
|
||
Для других CI-систем (GitLab CI, CircleCI и др.) применимы те же три команды: `yarn install`, `npx twenty build`, затем `npm publish` из `.twenty/output`.
|
||
|
||
<Tip>
|
||
**npm provenance** — опционально, но рекомендуется. Публикация с флагом `--provenance` добавляет к вашему пакету в npm значок доверия, позволяя пользователям проверить, что пакет был собран из конкретного коммита в общедоступном конвейере CI. См. инструкции по настройке в [документации по npm provenance](https://docs.npmjs.com/generating-provenance-statements).
|
||
</Tip>
|
||
|
||
## Внутреннее распространение
|
||
|
||
Для приложений, которые вы не хотите делать общедоступными — собственные инструменты, интеграции только для предприятия или экспериментальные сборки — вы можете отправить tarball напрямую на сервер Twenty.
|
||
|
||
### Отправка tarball
|
||
|
||
Соберите приложение и разверните его на конкретном сервере одним шагом:
|
||
|
||
```bash filename="Terminal"
|
||
npx twenty publish --server <server-url>
|
||
```
|
||
|
||
Любое рабочее пространство на этом сервере сможет установить и обновить приложение на странице настроек **Applications**.
|
||
|
||
### Управление версиями
|
||
|
||
Чтобы выпустить обновление:
|
||
|
||
1. Обновите значение поля `version` в файле `package.json`
|
||
2. Отправьте новый tarball командой `npx twenty publish --server <server-url>`
|
||
3. Рабочие пространства на этом сервере увидят доступное обновление в своих настройках
|
||
|
||
<Note>
|
||
Внутренние приложения ограничены сервером, на который они отправлены. Они не появятся в публичном маркетплейсе и не могут быть установлены рабочими пространствами на других серверах.
|
||
</Note>
|
||
|
||
## Категории приложений
|
||
|
||
Twenty группирует приложения в три категории в зависимости от способа их распространения:
|
||
|
||
| Категория | Как это работает | Отображается в маркетплейсе? |
|
||
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
|
||
| **Разработка** | Локальные приложения в режиме разработки, запущенные через `yarn twenty dev`. Используются для сборки и тестирования. | Нет |
|
||
| **Опубликовано** | Приложения, опубликованные в npm с префиксом `twenty-app-`. Отображаются в маркетплейсе, доступные для установки любому рабочему пространству. | Да |
|
||
| **Внутренний** | Приложения, развернутые через tarball на конкретном сервере. Доступны только рабочим пространствам на этом сервере. | Нет |
|
||
|
||
<Tip>
|
||
Начните в режиме **Разработка** во время создания приложения. Когда будет готово, выберите **Опубликовано** (npm) для широкого распространения или **Внутренний** (tarball) для приватного развертывания.
|
||
</Tip>
|