Denna guide beskriver de viktigaste grunderna för utveckling i detta projekt.
- Installation och konfiguration
- Utvecklingsflöde
- Releaseprocess
- Testa och verifiera
- Eventuella hinder
-
Installera mise (hanterar lintverktyg):
curl https://mise.run | sh -
Aktivera mise i ditt shell:
# För bash - lägg till i ~/.bashrc eval "$(mise activate bash)" # För zsh - lägg till i ~/.zshrc eval "$(mise activate zsh)" # För fish - lägg till i ~/.config/fish/config.fish mise activate fish | source
Starta sedan om din terminal.
-
Installera pipx (behövs för reuse licenslinting):
# Debian/Ubuntu sudo apt install pipx -
Installera Nodejs, Podman och/eller Docker, Git
-
Installera projektverktyg:
mise install
-
Installera mise (hanterar lintverktyg):
brew install mise
-
Aktivera mise i ditt shell:
# För zsh - lägg till i ~/.zshrc eval "$(mise activate zsh)" # För bash - lägg till i ~/.bashrc eval "$(mise activate bash)" # För fish - lägg till i ~/.config/fish/config.fish mise activate fish | source
Starta sedan om din terminal.
-
Installera nyare bash än macOS-standard:
brew install bash
-
Installera pipx (behövs för reuse licenslinting):
brew install pipx
-
Installera Nodejs, Podman och/eller Docker, Git
-
Installera projektverktyg:
mise install
- 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.yaml- 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.
# Installera lintverktyg (första gången)
mise install
just setup-devtools
# Visa alla körbra just-recept
just
# Kör alla kontroller
just verify
# Eller kör endast linting
just lint-all
# Autofixa där det är möjligt
just lint-fix- Linting: Shell, YAML, Markdown, TypeScript, GitHub Actions
- Säkerhet: Hemlighetsskanning med gitleaks
- Licensefterlevnad: REUSE-verktyget säkerställer korrekt copyright-information
- Commit-struktur: Conform kontrollerar commit-meddelanden för changelog-generering
Om några kontroller misslyckas i CI-pipelinen:
- Granska CI-fel-loggarna
- Kör
just verifylokalt 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
Kör just för att se alla tillgängliga kommandon. Huvudkommandon:
| Kommando | Beskrivning |
|---|---|
just verify |
Kör alla kontroller (lint + test) |
just lint-all |
Kör alla linters |
just lint-fix |
Autofixa lintproblem |
just test |
Kör tester |
just build |
Bygg projektet |
just clean |
Rensa byggartefakter |
| Kommando | Verktyg | Beskrivning |
|---|---|---|
just lint-commits |
conform | Validera commit-meddelanden |
just lint-secrets |
gitleaks | Skanna efter hemligheter |
just lint-yaml |
yamlfmt | Linta YAML-filer |
just lint-markdown |
rumdl | Linta markdown-filer |
just lint-shell |
shellcheck | Linta shell-skript |
just lint-shell-fmt |
shfmt | Kontrollera shell-formatering |
just lint-actions |
actionlint | Linta GitHub Actions |
just lint-license |
reuse | Kontrollera licensefterlevnad |
| Kommando | Beskrivning |
|---|---|
just lint-yaml-fix |
Fixa YAML-formatering |
just lint-markdown-fix |
Fixa markdown-formatering |
just lint-shell-fmt-fix |
Fixa shell-formatering |
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.