Arbete på kodsamverkansplattform
Arbete på kodsamverkansplattform
Syfte: Praktiskt stöd för hur organisationen använder kodsamverkansplattformar (GitHub, GitLab, Codeberg/Forgejo), antingen självdriftade eller som SaaS.
A. Skapande av kodförråd
- SKA: Namnet följer överenskommen namngivningsprincip
- kebab-case
- om projekt har flera kodförråd kan det behövas prefixas med projekt, exempel
.
- SKA: Synlighet (publik/privat) är satt enligt informationsklassning och beslut. Privat ska endast förekomma under begränsad tid, då plattformen hanterar öppna och inte känsliga projekt.
- SKA: Standardfiler för öppen programvara (LICENSE, README, .gitignore med mera) är på plats, se open-source-project-template för mer information.
- SKA: Dokumentationswebb som publiceras via GitHub Pages eller motsvarande har ett tydligt Pages-/dokumentationskodförråd när webbplatsen har egen livscykel eller samlar dokumentation från flera kodförråd.
- SKA: DNS-namn för Diggs dokumentationswebbar följer mönstret
docs.<namn>.digg.se. - SKA: Den inbyggda Jekyll-byggaren i GitHub Pages används inte som standard. Bygg webbplatsen explicit i CI med Hugo eller motsvarande statisk generator och publicera de genererade filerna till Pages.
- BÖR:
CODEOWNERS-fil används som komplement till README:s sektion för underhållsansvariga. Den pekar ut ansvariga per filområde och gör att rätt person automatiskt får granskningsförfrågan. Se Förberedelse inför publicering.
B. Behörigheter och åtkomst
- SKA: Tvåfaktorsautentisering (2FA/MFA) krävs för alla med rättigheter att ändra kodförrådets inställningar.
- SKA: Behörigheter följer principen om minsta möjliga åtkomst. Alla får bara de rättigheter de faktiskt behöver.
- SKA: Sammanfogning(merge)- och rättigheterna att skicka (push) till huvudgrenar är begränsa till behörig krets.
- SKA: Plattformens roller används konsekvent. Exempel: https://docs.github.com/en/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-predefined-organization-roles
- SKA: Behörighet är tidsbegränsad där det är tillämpligt.
- SKA: Periodisk översyn av behörigheter genomförs så att rättigheter följer faktisk tillhörighet och inte historiska.
C. Grenstrategi, kodgranskning och ändringsflöde
- SKA: Grenskydd (Branch protection) är aktiverad på viktiga grenar som exempelvis (
main/master/release/*). - SKA: Alla skrivningar till huvudgrenarna går via ändringsförfrågningar (PR/MR).
- SKA: Kodgranskning: minst en granskare utöver författaren innan sammanfogning av ändringsförfrågan.
- SKA: Automatiserade statuskontroller (tester, linters, säkerhetsskanning) måste passeras innan sammanfogning till huvudgren.
- SKA: CI är kopplad till ändringsförfrågningar, så att kontroller och tester körs på den föreslagna ändringen.
- BÖR: Grenstrategi för projektet är dokumenterad i
CONTRIBUTING.md. https://martinfowler.com/articles/branching-patterns.html - BÖR: För GitHub: risken med
pull_request_targeti workflows är förstådd och Actions-rättigheter är granskade (permissions:). Felaktig användning kan ge hemligheter till opålitlig kod från ändringsförfrågningar.
D. Signering och spårbarhet
- SKA: Release-taggar och release-artefakter signeras (Sigstore/cosign rekommenderas; GPG accepteras), så att användare kan verifiera att utgåvan kommer från projektet.
- SKA: Bidragsgivare checkar in med en e-postadress som tillhör deras organisation (eller annan verifierad identitet), så att bidragen kan spåras till rätt aktör.
- SKA: Utveckling sker så att spårbarhet bevaras (vem gjorde vad, när).
- SKA: Eventuella undantag från processen dokumenteras och motiveras.
- BÖR: Signerade incheckningar används där risknivån motiverar det. Varje incheckning kan då knytas kryptografiskt till sin författare.
F. Arkivering av projekt
- SKA: Plattformens arkiveringsfunktion används (gör kodförrådet skrivskyddat). Koden förblir åtkomlig men ingen kan av misstag bidra och det är tydligt att projektet inte underhålls längre.
- SKA: README anger att projektet inte längre underhålls.
- SKA: Projekt utan underhållsansvariga arkiveras.