Skip to content
Apothem
Руководства по эксплуатации

Настройка учётной записи издателя

Настройка доверенного издателя npmjs.com для @ahmed-g-gad/apothem и предварительных требований к релизу на стороне GitHub.

Это руководство настраивает сторону издателя для поверхности релиза. В схеме распространения есть один реестр: npm-пакет с областью видимости @ahmed-g-gad/apothem на npmjs.com, публикуемый рабочим процессом publish-npm.yml. Рабочий процесс запускается при push тега v*.*.* наряду с release.yml и не ждёт его (запасной вариант — ручной запуск со входным параметром tag). Шлюзом служит одобрение среды release: оператор одобряет его после того, как рабочие процессы GitHub Release, Pages, CI, соответствия и окружений станут зелёными. Все остальные артефакты поставляются на самой странице GitHub Release и не требуют внешней учётной записи издателя.

Карта идентичности

ПоверхностьУчётная записьИдентичность пакета
GitHubahmed-g-gadahmed-g-gad/apothem
npm (npmjs.com)ahmed-g-gad@ahmed-g-gad/apothem

Владельцу GitHub разрешено меняться в будущем. Логика рабочих процессов и установщиков читает github.repository, github.repository_owner или APOTHEM_GITHUB_REPO там, где платформа допускает динамическое разрешение. Идентификатор пакета в реестре остаётся стабильным, поскольку пользователи устанавливают имя пакета, а не имя учётной записи сопровождающего.

npm (npmjs.com)

  1. Войдите на https://www.npmjs.com/ как ahmed-g-gad.

  2. Включите двухфакторную аутентификацию для учётной записи.

  3. Подтвердите имя пакета с областью видимости:

    npm view @ahmed-g-gad/apothem name

    404 означает, что пакет с областью видимости ещё не опубликован. Любой другой ответ о пакете должен соответствовать этому репозиторию и учётной записи до публикации.

  4. Создайте пакет в npm, если интерфейс требует первой записи пакета. Сохраняйте имя с областью видимости: @ahmed-g-gad/apothem.

  5. Настройте доверенную публикацию для @ahmed-g-gad/apothem из GitHub Actions:

    • Владелец GitHub: ahmed-g-gad
    • Репозиторий: apothem
    • Имя файла рабочего процесса: publish-npm.yml
    • Среда: release (environment: задания публикации в publish-npm.yml; они должны совпадать)
    • Разрешённое действие: npm publish.
  6. В GitHub убедитесь, что среда release существует в ahmed-g-gad/apothem и требует ручного одобрения для развёртывания.

  7. Ограничьте поверхность npm одним публичным пакетом в реестре: @ahmed-g-gad/apothem на npmjs.com.

  8. Одобрите задание publish GitHub Release запуска release.yml, который запускается при push тега. Оно ждёт одобрения среды release, а для проверки ниже этот запуск должен быть зелёным; руководство по циклу релиза, §2.3, показывает, как это сделать. Затем подтвердите готовность к релизу:

    Release readiness
    bash scripts/release/check-release-ready.sh <release-tag>

    Для проверки нужен заданный GH_TOKEN и опубликованный файл sbom.cdx.json в dist/release-assets/. В руководстве по циклу релиза, §2.4, указаны область действия токена и команда загрузки.

  9. Одобрите развёртывание в среде release для запуска Publish npm (publish-npm.yml), который запускает push тега. Если этот запуск не стартовал, запустите рабочий процесс вручную на вкладке GitHub Actions с tag=<release-tag>.

  10. Проверьте опубликованный пакет:

    npm verification
    npm view @ahmed-g-gad/apothem version
    npx @ahmed-g-gad/apothem@<version> --version

Секрет NPM_TOKEN, имя пользователя или пароль не требуются. Рабочий процесс публикует через npm Trusted Publishing (OIDC) с версией Node и минимальной версией npm CLI для OIDC, закреплёнными внутри .github/workflows/publish-npm.yml. Он выполняет npm publish --provenance --access public в npmjs.com, поэтому заявление о происхождении Sigstore задано явно; npm также по умолчанию выдаёт происхождение для публичных пакетов, опубликованных из публичного рабочего процесса GitHub Actions. Ошибка реестра 404 во время PUT означает, что доверенный издатель на стороне npm, область видимости пакета или авторизация учётной записи ещё не согласованы; исправьте настройки пакета npm перед повторным запуском рабочего процесса.

Как только доверенная публикация прошла успешно, навсегда закройте путь через токены: в разделе пакета Settings → Publishing access на npmjs.com выберите Require two-factor authentication and disallow tokens и удалите любой оставшийся в репозитории секрет с токеном npm. Рабочий процесс больше его не читает.

Ссылки: доверенные издатели npm, происхождение npm и области видимости npm.

Предварительные требования к релизу на стороне GitHub

Остальные поверхности релиза являются нативными для GitHub и аутентифицируются с помощью GITHUB_TOKEN с областью действия репозитория; внешняя учётная запись не задействована.

  1. GitHub Release. .github/workflows/release.yml выполняется на теге версии и нуждается только в своём локальном для задания разрешении contents: write. Перед тегированием убедитесь, что файл рабочего процесса присутствует в main.

  2. Пользовательский домен Pages. Сайт документации развёртывается через publish-static-site.yml на пользовательский домен apothem.ahmedgad.com. Домен, DNS и принудительный HTTPS устанавливаются руководством по включению Pages; проверьте:

    Pages verification
    gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced'
    curl -sSI https://apothem.ahmedgad.com/ | head -n 1
  3. Скриптовые установщики. install.sh и install.ps1 обслуживаются с сайта Pages (https://apothem.ahmedgad.com/install.sh и https://apothem.ahmedgad.com/install.ps1). Они публикуются тем же развёртыванием Pages; отдельная учётная запись или токен не требуются.

Матрица проверки

После настройки каждая поверхность публикации отвечает на свою каноническую проверку:

ПоверхностьПроверка
npmjs.comnpm view @ahmed-g-gad/apothem version возвращает выпущенную версию
GitHub Releasegh release view <release-tag> --json assets --jq '.assets[].name' перечисляет sdist, wheel, SBOM, бандлы cosign, происхождение и платформенные архивы
Pagescurl -sSI https://apothem.ahmedgad.com/ возвращает 200 на пользовательском домене

On this page