Denna guide beskriver de viktigaste grunderna för utveckling i detta projekt.
- Klona ned projektet, gärna från senaste release tag.
- Installera alla beroenden och provkör:
npm install
npm start -- --help
npm start -- -f openapi.yamlDu bör ha följande installerat för att arbeta i projektet:
- Nodejs
- Podman och/eller Docker
- Git
- Skapa en ämnesgren från projektets huvudgren, oftast baserat på och namngett efter ett ärende i backlogen.
- feature/ny-feature
- fix/ny-fix
- Pusha dina ändringar till ämnesgrenen.
- Öppna en ny pull request till huvudprojektet när du känner dig klar.
Följ allmänna regler kring CONTRIBUTING.md
När du skickar in en PR kommer CI automatiskt att köra flera kontroller.
För att undvika överraskningar bör du köra dessa kontroller lokalt först.
- Kör kvalitetskontrollscriptet:
./development/code_quality.sh
- Åtgärda eventuella problem
- Uppdatera din PR med fixarna
- Verifiera att CI passerar i den uppdaterade PR:en
- Lintning med megalinter: BASH, Markdown, YAML, Typescript, GitHub Actions, säkerhetsskanning
- Licensöverensstämmelse: REUSE-verktyget säkerställer korrekt copyright-information
- Commit-struktur: Conform kontrollerar commit-meddelanden för changelog-generering
- Beroendeanalys: Skannar efter sårbarheter, utdaterade paket och licensproblem
- OpenSSF Scorecard: Validerar säkerhetsbästa praxis
Om några kontroller misslyckas i CI-pipelinen:
- Granska CI-fel-loggarna
- Kör kontrollerna lokalt för att återskapa problemen
- Gör nödvändiga fixar i din lokala miljö
- Uppdatera din Pull Request
- Verifiera att alla kontroller passerar i den uppdaterade PR:en
Releaseprocessen hanteras automatiskt av maintainer-teamet via intern dokumentation.
Efter varje release, pre- eller stabil, bör funktionaliteten testas och verifieras.
Kör följande kommando mot den version av verktyget som ska testas:
npx @diggsweden/rest-api-profil-lint-processor@<version> -f openapi.yaml -l raplp.log --dex avstamning.xlsxKör följande kommandon med den version av verktyget som ska testas:
podman run -it -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml -l /data/raplp.log --dex /data/avstamning.xlsxFör alla kommandon bör podman kunna ersättas med docker om så önskas.
I en terminal kör:
podman run --rm -it -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml- Där data motsvarar den katalog i containern som du vill att nuvarande katalog
\$(pwd)mountas in i, containern får tillgång till dina filer i\$(pwd). - Där
openapi.yamlmotsvarar den filen som du vill applicera valideringen på. - Där <VERSION> motsvarar den version av rest-api-profilen som du vill nyttja.
Notera: Sökvägar kan hanteras olika beroende på miljö:
- Podman (Linux/macOS/WSL): -v $(pwd):/app/example
- Docker (PowerShell): -v "${PWD}:/app/example"
- Docker (CMD): -v %cd%:/app/example
Exempel
podman run --rm -it -v $(pwd):/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version> -f /data/openapi.yaml -l /data/raplp.log --dex /data/avstamning.xlsxVid eventuella fel och du inte hittar rap-lp-error.log kan du behöva köra kommandot via containern enligt den alternativa instruktionen nedan.
Se till att containern har rättigheter att skriva till den katalog som du mountar, se Skrivåtkomst till mount från container.
- Starta en podman container:
podman run --rm -it --entrypoint /bin/sh -v $(pwd):/app/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version>
- Kör din validering ifrån containern:
npm start -- -f /data/openapi.yaml
- Lägg på önskade flaggor enligt tidigare exempel.
Exempel:
podman run --rm -it --entrypoint /bin/sh -v $(pwd):/app/data ghcr.io/diggsweden/rest-api-profil-lint-processor:<version>
/app: npm start -- -f data/openapi.yaml -l data/raplp.log --dex data/avstamning.xlsx # skriver till din nuvarande katalogDu kan behöva ett Personal Access Token (PAT) för din användare i github för att kunna hämta images från Github Container Registry (GHCR) och Github Packages, se FAQ i readme.
Vid körningar med podman och docker i kombination med flaggor som sparar information till filer kan det uppstå problem kring skrivrättigheter som gör att filer inte dyker upp som önskat. Filerna kan finnas i containern men dyker inte i den mountade katalogen som specificerats. Se FAQ i readme.