- В репозиторий, генерирующий swagger размещаем триггер для генерации / публикации апи клиента
- Репозиторий, отвечающий за апи клиенты получает swagger файл
- Собирает из него npm пакет
- Поднимает его версию
- Публикует его в npm registry
Вы используете Gitlab:
- Разместить содержимое репозитория у себя в гитлабе
- В
api/
добавить необходимое количество апи клиентов (можно копипаститьapi-client
) - Для добавленных клиентов изменить:
package.json
"name": указать свое название
"peerDependencies": заменить на свой пакет с базовыми http клиентами
templates/
*: изменить на свои шаблоны при необходимости (базовые шаблоны находятся в shared/src/templates
ci.yml
заменить значения переменных на свои
.npmrc
"registry" - указать url своего npm registry
- В
.gitlab-ci.yml
добавить для каждого апи клиента:
include:
- local: "api/${YOUR_API_CLIENT}/ci.yml"
- В репозитории бэкенда, где генерируем
swagger
описание добавить:
build_frontend_client:
stage: build
allow_failure: true
variables:
SERVICE: ${YOUR_API_CLIENT}
SERVICE_REF_SLUG: ${CI_COMMIT_REF_SLUG}
trigger:
project: ${YOUR_PROJECT_FOR_API_CLIENT}
branch: "master"
only:
changes:
- ${PATH_TO_SWAGGER_FILE}
где:
${YOUR_PROJECT_FOR_API_CLIENT} - название репозитория из п.1
${PATH_TO_SWAGGER_FILE} - путь до swagger файла в репозитории бэкенда
Вы используете что-то другое:
PR welcome!)
- Собрать
shared
пакет:
# выполнить в shared
npm i
npm run build
- Сгенерировать апи клиент из примера:
# выполнить в api/api-client
npm i
npm run build:test
Результат сборки апи клиента будет доступен в api/api-client/dist