CI has no lockfile and cannot fail on missing scripts; release skips tests
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Funcionalidade
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- eslint, github-actions, javascript, node.js
- Domínio
- build-system, ci-cd, release, tooling
Direção de pesquisa
Start with .github/workflows/ci.yml, .github/workflows/release.yml, and package.json; read the workflow definitions and package scripts, then run npm test and npm run lint. Check each suggested fix against the acceptance criteria, including reproducible installs and preventing releases from failing commits. Done when the CI and release workflows enforce the listed checks and the three acceptance criteria pass.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
The CI and release workflows have several gaps that make builds non-reproducible and let a release go out from a commit that fails tests.
Where
.github/workflows/ci.yml:9-19.github/workflows/release.yml:3-6,.github/workflows/release.yml:33-37package.json:4,package.json:7-11
Details
- run: npm install
- run: npm run lint --if-present
- run: npm test --if-present -- --ci
- No lockfile is committed and CI uses
npm install, so every run resolves fresh versions inside the caret ranges, for direct and transitive packages. --if-presentturns a deleted or renamed script into a green step.npm run format(prettier --check .) exists but CI never runs it.- There is no coverage script, although
coverage/is already in.gitignore. ci.ymlhas nopermissions:block, so its token scope depends on the repository default.release.ymlpublishes on anyv*tag without running lint or tests.- The fallback release body is built as
"# Release ${TAG}\n\nSee ..."and printed withecho, so the published body contains literal\n\n. TheGITHUB_OUTPUTheredoc uses a fixedEOFdelimiter, which breaks if the notes contain a lineEOF. "lint": "eslint . --ext .js"uses a legacy flag; the flat config already scopes files.package.jsonversion is0.0.0whilev0.1.0is released.
Suggested fix
- Commit
package-lock.json, switch tonpm ci, addcache: npmto setup-node - Drop
--if-present - Add
npm run formatto CI - Add
"coverage": "jest --coverage"withcollectCoverageFrom: ["js/**/*.js"]and print the summary in CI - Add top-level
permissions: contents: readtoci.yml - Make the release job depend on a test job
- Use
printfand a random heredoc delimiter inrelease.yml - Drop
--ext .js; set the package version or state that it is unused
Acceptance criteria
- Two CI runs on the same commit install the same dependency tree
- Removing the
testscript fails CI - A tag on a commit with failing tests does not publish a release
Getting started
- Relevant files:
.github/workflows/ci.yml,.github/workflows/release.yml,package.json - How to run tests:
npm install, thennpm testandnpm run lint - Related docs:
docs/ARCHITECTURE.md,.github/CONTRIBUTING.md
Filed by repo-audit/full-audit at 8a2c86c. Severity: medium. Effort: S. audit-key: quality|.github/workflows/ci.yml|jobs.test
- Linguagem predominante
- JavaScript
- Estrelas
- 4
- Forks
- 2
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de TMHSDigital/Static_Chess
-
enhancement good first issue severity: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
TMHSDigital/Static_Chess#53 ·
-
documentation good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
TMHSDigital/Static_Chess#49 ·
-
documentation good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
TMHSDigital/Static_Chess#48 ·
-
documentation severity: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
TMHSDigital/Static_Chess#47 ·
-
documentation good first issue severity: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
TMHSDigital/Static_Chess#46 ·
Todas as issues de TMHSDigital/Static_Chess
Issues semelhantes
-
good first issue tests
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
-
1️⃣ phase/under-investigation flaky/confirmed flaky/needs-decision type/bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
growilabs/growi#12246 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
TMHSDigital/Free-Game-Dev-Assets#301 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 79/100