Configuração da conta de publicador
Configure o publicador confiável do npmjs.com para @ahmed-g-gad/apothem e os pré-requisitos de lançamento do lado do GitHub.
Este runbook configura o lado do publicador da superfície de lançamento. A
distribuição tem um único registro: o pacote npm com escopo
@ahmed-g-gad/apothem no npmjs.com, publicado pelo fluxo de trabalho
publish-npm.yml. O fluxo de trabalho é executado no push da tag v*.*.*, ao
lado de release.yml, e não espera por ele (um despacho manual com uma entrada
tag é a alternativa). A aprovação do ambiente release é o portão: o operador
a aprova depois que os fluxos de trabalho de GitHub Release, Pages, CI,
conformidade e harness estiverem verdes. Todos os demais artefatos são
distribuídos na própria página do GitHub Release e não precisam de nenhuma conta
de publicador externa.
Mapa de identidade
| Superfície | Conta | Identidade do pacote |
|---|---|---|
| GitHub | ahmed-g-gad | ahmed-g-gad/apothem |
| npm (npmjs.com) | ahmed-g-gad | @ahmed-g-gad/apothem |
O proprietário do GitHub pode mudar no futuro. A lógica dos fluxos de trabalho e do instalador lê github.repository, github.repository_owner ou APOTHEM_GITHUB_REPO onde uma plataforma permite a resolução dinâmica. O identificador do pacote no registro permanece estável porque os usuários instalam o nome do pacote, não o nome da conta do mantenedor.
npm (npmjs.com)
-
Faça login em
https://www.npmjs.com/comoahmed-g-gad. -
Habilite a autenticação de dois fatores na conta.
-
Confirme o nome do pacote com escopo:
npm view @ahmed-g-gad/apothem nameUm
404significa que o pacote com escopo ainda não foi publicado. Qualquer outra resposta de pacote deve corresponder a este repositório e a esta conta antes da publicação. -
Crie o pacote no npm se a interface exigir um primeiro registro de pacote. Mantenha o nome com escopo:
@ahmed-g-gad/apothem. -
Configure o Trusted Publishing para
@ahmed-g-gad/apothema partir do GitHub Actions:- Proprietário do GitHub:
ahmed-g-gad - Repositório:
apothem - Nome do arquivo do fluxo de trabalho:
publish-npm.yml - Ambiente:
release(oenvironment:do job de publicação empublish-npm.yml; os dois devem corresponder) - Ação permitida:
npm publish.
- Proprietário do GitHub:
-
No GitHub, verifique se o ambiente
releaseexiste emahmed-g-gad/apotheme se exige aprovação manual para a implantação. -
Mantenha a superfície do npm em um único pacote de registro público:
@ahmed-g-gad/apothemno npmjs.com. -
Aprove o job
publish GitHub Releaseda execução derelease.ymlque o push da tag inicia. Ele aguarda a aprovação do ambienterelease, e a verificação abaixo exige que essa execução esteja verde; o runbook do ciclo de lançamento, §2.3, indica como. Depois, confirme a prontidão para o lançamento:Release readiness bash scripts/release/check-release-ready.sh <release-tag>A verificação exige que
GH_TOKENesteja definido e que osbom.cdx.jsonpublicado esteja emdist/release-assets/. O runbook do ciclo de lançamento, §2.4, indica o escopo do token e o comando de download. -
Aprove a implantação do ambiente
releasepara a execução dePublish npm(publish-npm.yml) que o push da tag inicia. Se essa execução não foi iniciada, despache o fluxo de trabalho na aba GitHub Actions comtag=<release-tag>. -
Verifique o pacote publicado:
npm verification npm view @ahmed-g-gad/apothem version npx @ahmed-g-gad/apothem@<version> --version
Nenhum segredo NPM_TOKEN, de nome de usuário ou de senha é necessário. O fluxo
de trabalho publica por meio do npm Trusted Publishing (OIDC), com a versão do
Node e o piso de OIDC da CLI do npm fixados dentro de
.github/workflows/publish-npm.yml. Ele executa
npm publish --provenance --access public no npmjs.com, de modo que a
declaração de procedência do Sigstore é explícita; o npm também emite
procedência por padrão para pacotes públicos publicados a partir de um fluxo de
trabalho público do GitHub Actions. Um 404 do registro durante o PUT
significa que o publicador confiável do lado do npm, o escopo do pacote ou a
autorização da conta ainda não estão alinhados; corrija as configurações do
pacote no npm antes de tentar o fluxo de trabalho novamente.
Depois que uma publicação confiável tiver sido bem-sucedida, feche o caminho dos tokens de vez: em Settings → Publishing access do pacote no npmjs.com, selecione Require two-factor authentication and disallow tokens e exclua qualquer segredo de token do npm que tenha ficado no repositório. O fluxo de trabalho não lê mais nenhum.
Referências: Publicadores confiáveis do npm, procedência do npm e escopos do npm.
Pré-requisitos de lançamento do lado do GitHub
As superfícies de lançamento restantes são nativas do GitHub e se autenticam com
o GITHUB_TOKEN com escopo de repositório; nenhuma conta externa está
envolvida.
-
GitHub Release.
.github/workflows/release.ymlé executado na tag de versão e precisa apenas da sua permissãocontents: write, local ao job. Confirme que o arquivo do fluxo de trabalho está presente emmainantes de marcar a tag. -
Domínio personalizado do Pages. O site de documentação é implantado por meio de
publish-static-site.ymlno domínio personalizadoapothem.ahmedgad.com. O domínio, o DNS e a imposição de HTTPS são estabelecidos pelo runbook de habilitação do Pages; verifique:Pages verification gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced' curl -sSI https://apothem.ahmedgad.com/ | head -n 1 -
Instaladores de script.
install.sheinstall.ps1são servidos a partir do site do Pages (https://apothem.ahmedgad.com/install.shehttps://apothem.ahmedgad.com/install.ps1). Eles são publicados pela mesma implantação do Pages; nenhuma conta ou token separado é necessário.
Matriz de verificação
Após a configuração, cada superfície de publicador responde à sua verificação canônica:
| Superfície | Verificação |
|---|---|
| npmjs.com | npm view @ahmed-g-gad/apothem version retorna a versão lançada |
| GitHub Release | gh release view <release-tag> --json assets --jq '.assets[].name' lista sdist, wheel, SBOM, bundles cosign, procedência e arquivos de plataforma |
| Pages | curl -sSI https://apothem.ahmedgad.com/ retorna 200 no domínio personalizado |