Релиз¶
Релизы создаются на основе опубликованного релиза на GitHub, тег которого представляет собой значение semver с префиксом v, например v1.2.7.
Единый рабочий процесс Release разрешает тег один раз, а затем передаёт производные теги version, version_tag и тег образа, безопасный для Docker, через упаковку npm, аргументы сборки Docker, метки образов, метаданные сервера, маркеры README и маркеры документации .
Настройки репозитория GitHub¶
Настройте эти параметры перед первым выпуском.
| Area | Required setting |
|---|---|
| Actions | Enable GitHub Actions for the repository. |
| Actions token | Allow workflows to request the permissions declared in each workflow. |
| Branch protection | Require Actionlint, CI, CodeQL, and Dependency Review before merging to main. |
| Pages | Set Build and deployment -> Source to GitHub Actions. |
| Packages | Allow GitHub Actions to publish packages to GitHub Packages. |
| Environments | Create npm-production, docker-production, github-pages, and mcp-registry-production. |
| Code scanning | Enable code scanning to view CodeQL, Scorecard, and Trivy SARIF results. |
Добавьте необходимых рецензентов в npm-production, docker-production и mcp-registry-production, если для релизов требуется ручное утверждение после публикации релиза на GitHub. Среда github-pages используется встроенной задачей развертывания GitHub Pages.
Публикация в npm¶
Рабочий процесс выпуска npm осуществляет публикацию через npm Trusted Publishing с использованием GitHub Actions OIDC. Для публикации не используется NPM_TOKEN.
Настройте доверенного издателя на сайте npmjs.com, указав именно следующие значения:
| npm Trusted Publisher field | Value |
|---|---|
| Provider | GitHub Actions |
| Repository | swimmwatch/cloakbrowser-mcp |
| Workflow filename | release.yml |
| Environment | npm-production |
| Allowed action | npm publish |
Задание npm выполняется на раннерах, размещённых на GitHub, использует Node.js 24 и сохраняет id-token: write, чтобы npm мог обменять токен OIDC GitHub Actions на краткосрочные учетные данные для публикации. Для доверенной публикации npm требуется npm CLI >=11.5.1 и Node.js >=22.14.0.
Использование в издательском деле:
При публикации через Trusted Publishing npm автоматически генерирует информацию о происхождении пакетов для общедоступных пакетов из общедоступных репозиториев. Не следует добавлять в этот рабочий процесс долгосрочный токен публикации npm.
Версия пакета взята из тега релиза GitHub, предшествующего npm pack и npm publish, и задание завершается с ошибкой, если package.json не соответствует определённой версии выпуска.
Публикация в Docker¶
Образы Docker публикуются по адресу:
Задание docker использует репозиторий GITHUB_TOKEN с packages: write для GHCR. Для публикации на Docker Hub требуется DOCKERHUB_USERNAME и DOCKERHUB_TOKEN в секретах среды docker-production или репозитория.
Этот рабочий процесс обновляет обзор репозитория на Docker Hub после успешной загрузки образа. Docker Hub не загружает корневой репозиторий README.md автоматически для данного цикла выпуска GitHub Actions; обзор, специфичный для Docker Hub, содержится в docs/dockerhub-readme.md.
Перед слиянием release PR CI проверяет:
- запускает проверки TypeScript, lint, форматирования, сборки, тестов и покрытия;
- проверяет метаданные и содержимое npm-пакета;
- собирает Docker-образы для
linux/amd64иlinux/arm64; - запускает smoke-проверки Docker
--help; - сравнивает образ
linux/amd64с upstream Playwright MCP с помощью скрипта проверки паритета моста; - сканирует Docker-образы с помощью Trivy на наличие уязвимостей ОС и библиотек высокого и критического уровня.
Во время публикации релиза Docker workflow:
- применяет версию релиза;
- устанавливает доступные обновления безопасности Debian поверх зафиксированного базового образа Playwright MCP во время сборки Docker;
- удаляет неиспользуемые глобальные данные npm из образа среды выполнения;
- публикует мультиплатформенный образ;
- обновляет обзор Docker Hub после успешной отправки образа.
В процессе сборки Docker получает аргументы сборки RELEASE_VERSION, RELEASE_VERSION_TAG и VCS_REF. Рабочий процесс также вычисляет дайджест базового образа Playwright MCP из исходного репозитория и передаёт его как PLAYWRIGHT_MCP_IMAGE_DIGEST.
В окончательном образе хранятся те же значения, что и в метках OCI и метаданных среды выполнения (переменных среды). Опубликованные образы содержат метки для названия, описания, источника, документации, версии, ревизии, лицензии, авторов, поставщика, названия базового образа, хеша базового образа и имени сервера MCP.
Trivy — это бесплатное программное обеспечение с открытым исходным кодом, которое не требует внешнего токена для публичного сканирования образов. Результаты SARIF загружаются в систему сканирования кода GitHub, если сканирование кода включено.
После первой публикации убедитесь, что пакет GHCR является общедоступным и связан с этим репозиторием, а также убедитесь, что репозиторий на Docker Hub является общедоступным.
Docker публикует кроссплатформенный манифест для linux/amd64 и linux/arm64. PR CI выполняет smoke-проверки обеих платформ перед слиянием и сохраняет сравнение паритета браузерных инструментов для linux/amd64.
Публикация реестра MCP¶
Задание mcp-registry публикует server.json в официальный реестр по адресу:
При публикации с сервера используется локальный составной GitHub Action MCP Registry Publish, официальный mcp-publisher CLI и OIDC GitHub Actions. Не создавайте пул- запрос к modelcontextprotocol/registry для добавления этого сервера в список; этот репозиторий явно требует, чтобы авторы пакетов публиковали их с использованием mcp-publisher.
Для работы этого рабочего процесса не требуются Glama, система биллинга, PAT-ключ GitHub, учетные данные DNS или долгосрочные секретные ключи реестра. В нём используются:
id-token: writeдля аутентификации по стандарту OIDC на GitHub;mcp-publisher login github-oidc;- существующее пространство имён GitHub
io.github.swimmwatch/cloakbrowser-mcp; - значение пакета npm
mcpNameдля подтверждения права собственности на пакет npm; - метка образа Docker
io.modelcontextprotocol.server.nameдля подтверждения права собственности на образ OCI .
Задание MCP Registry запускается в момент того же события GitHub Release, что и npm, Docker, а также публикация документации. Оно объявляет needs: [npm, docker], поэтому публикация в npm и Docker завершается до начала публикации в реестре. Развертывание документации объявляет needs: [docs-build, npm, docker, mcp-registry], поэтому GitHub Pages обновляется только после успешной публикации npm, Docker и официального MCP Registry. Это составное действие намеренно ориентировано на реестр: оно проверяет server.json локально, проверяет его с помощью mcp-publisher, проверяет, видна ли уже точно такая же версия в реестре, проводит аутентификацию с помощью mcp-publisher login github-oidc, публикует метаданные сервера и проверяет окончательную запись в реестре.
В случае временного сбоя реестра запустите заново задание mcp-registry, вызвавшее сбой, в первоначальном цикле выпуска после того, как задания npm и Docker будут отмечены зеленым цветом. Ручной триггер workflow_dispatch на Release предназначен для полных запусков конвейера релиза с явно указанным тегом.
Проверьте опубликованную запись реестра с помощью:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.swimmwatch/cloakbrowser-mcp"
npm run registry:check
Реестр GitHub https://github.com/mcp представляет собой отдельную, тщательно отборную платформу для поиска проектов. Публикация в официальном реестре MCP является обязательной, но не гарантирует немедленной видимости на странице GitHub /mcp. Рассматривайте команду npm run registry:check как инструмент проверки выпуска для официального реестра, npm, GHCR, Docker Hub, а также как средство проверки видимости в GitHub MCP с максимальной эффективностью. Используйте npm run registry:check:strict только после того, как видимость в GitHub MCP станет обязательным условием.
Контрольный список каталога Glama¶
Оценка в каталоге Glama не связана с релизами на GitHub и официальной публикацией в MCP Registry. Репозиторий содержит glama.json, поэтому учетная запись администратора swimmwatch может заявить о своих правах или подтвердить владение в Glama.
Перед выпуском стабильной версии заполните бесплатный чек-лист Glama:
- синхронизировать сервер через интерфейс администрирования сервера Glama MCP после того, как
glama.jsonбудет объединен сmain; - открыть
https://glama.ai/mcp/servers/swimmwatch/cloakbrowser-mcp/admin/dockerfile; - настроить Glama для сборки Dockerfile этого репозитория и запуска существующей точки входа stdio без дополнительных секретов;
- сохранить совместимость среды выполнения с настройками по умолчанию CloakBrowser:
cloakбраузерный , режим без интерфейса, вывод в stdout и хранилище артефактов/data; - нажмите «Развернуть» и дождитесь успешного завершения теста сборки;
- создайте и опубликуйте релиз Glama с той же версией, что и релиз на GitHub, например,
1.2.7; - после выпуска один раз воспользуйтесь функцией Glama «Попробовать в браузере», чтобы стимулировать начальное использование;
- вручную добавьте соответствующие серверы, как минимум официальный сервер Playwright MCP, а также, по желанию, близкие альтернативы для автоматизации браузеров.
Не добавляйте способ оплаты или платный хостинг Glama только для того, чтобы повысить рейтинг каталога. Если Glama требует оплаты за какой-либо обязательный пункт чек-листа, рассматривайте это как препятствие для выпуска, требующее явного решения со стороны сопровождающего.
Рабочие процессы в сфере безопасности¶
В репозитории используются бесплатные инструменты безопасности:
| Workflow | Tool | Trigger | User setup |
|---|---|---|---|
CodeQL | GitHub CodeQL | push, pull request, weekly, manual | Enable code scanning to view SARIF results. |
Dependency Review | GitHub Dependency Review | pull request | No external account or token. |
OpenSSF Scorecard | OpenSSF Scorecard | push, weekly, manual | Enable code scanning to view SARIF results. |
Zizmor | zizmor | workflow changes, manual | No external account or token. |
CI / Release | Trivy | Docker build and release | Enable code scanning to view SARIF results. |
CI / npm release | npm audit --omit=dev --audit-level=high | PR CI and npm publish job | No external account or token. |
Фиксация SHA-кодов действий планируется в рамках будущего этапа укрепления безопасности. В текущих рабочих процессах используются ссылки на действия с указанием версий, что позволяет контролировать обновления, пока инфраструктура релизов ещё находится на начальном этапе развития.
Публикация документации¶
docs-build и docs-deploy развертывают MkDocs с помощью встроенного потока развертывания GitHub Pages Actions. В настройках Pages репозитория в качестве источника необходимо указать GitHub Actions.
Рабочий процесс формирует документацию в строгом режиме, загружает сгенерированный каталог site/ в каталог actions/upload-pages-artifact, а также развертывает его с помощью actions/deploy-pages в среду github-pages только после успешной публикации npm, Docker и MCP Registry.
При публикации документации после сборки MkDocs также запускается валидатор SEO. Дополнительные токены для подтверждения веб-мастера используют официальные бесплатные инструменты для веб-мастеров и могут указываться в виде переменных репозитория или секретных данных:
GOOGLE_SITE_VERIFICATIONBING_SITE_VERIFICATIONYANDEX_SITE_VERIFICATIONBAIDU_SITE_VERIFICATIONNAVER_SITE_VERIFICATION
Для включения уведомлений IndexNow требуется секретный ключ репозитория с именем INDEXNOW_KEY. Если он задан, рабочий процесс публикует необходимый файл ключа и отправляет сгенерированные URL-адреса карты сайта после развертывания на GitHub Pages.
Не включайте платные услуги по индексации, рекламные продукты или сторонние аналитические инструменты в процесс выпуска документации без отдельного явного решения.
Мониторинг вверх по течению¶
Рабочий процесс мониторинга исходного кода запускается ежедневно, а также может быть запущен вручную из GitHub Actions. Он проверяет оба канала распространения MCP для Playwright:
- пакет npm:
@playwright/mcp; - образ Docker:
mcr.microsoft.com/playwright/mcp.
При обнаружении более новой версии из исходного репозитория рабочий процесс создает задачу на GitHub, назначенную пользователю swimmwatch. Задача содержит текущие и последние версии npm/Docker версии, краткое резюме примечаний к выпуску из microsoft/playwright-mcp, а также ссылки на полный журнал изменений исходного проекта, пакет npm и теги Docker.
Выполните ту же проверку локально с помощью команды:
Теги выпуска¶
| Release type | GitHub Release setting | npm dist-tag | Docker tags |
|---|---|---|---|
| Stable | Not prerelease | latest | vX.Y.Z, X.Y.Z, X.Y, latest |
| Prerelease | Prerelease | next | vX.Y.Z-prerelease, X.Y.Z-prerelease |
Контрольный список¶
Перед публикацией пресс-релиза:
- Выполнять слияние только после того, как
ActionlintиCIстанут зелёными. - Создайте релиз на GitHub на основе тега, например
v1.2.7. - При публикации версии npm
nextпометьте релиз как предварительный. - Убедитесь, что доверенный издатель npm настроен для
release.ymlиnpm-production. - Убедитесь, что
npm-production,docker-production,github-pagesиmcp-registry-production. - Убедитесь, что сканирование кода на GitHub включено, если требуется открытый доступ к загруженным файлам SARIF.
- Убедитесь, что пакет GHCR доступен публично после первой публикации в Docker.
- Убедитесь, что сервер Glama синхронизирован, протестирован через страницу администрирования Dockerfile и выпущен с той же стабильной версией.
SUPPORT.md намеренно отложено до тех пор, пока для проекта не будет разработана стабильная политика поддержки, выходящая за рамки задач на GitHub и рекомендаций по безопасности.