Gå til indhold

Dependency-opdateringer

update-dependencies er en valgfri custom pipeline i begge templates. Den opdaterer NuGet, npm og understøttede CDN-referencer og samler ændringerne i én PR. PR-pipelinen står for den efterfølgende validering.

Kontrollér følgende:

  • BITBUCKET_API_TOKEN er oprettet som sikret repository-variabel og kan både læse og skrive PRs.
  • Pipeline-jobbet kan pushe opdateringsbranchen til repositoryet.
  • SOLUTION_ROOT_DIR peger på en mappe med en .sln eller .slnx.
  • WEB_PROJECT_DIR findes, hvis den er angivet.
  • Arbejdstræet er rent ved starten af opdateringen. Runtime-mapperne skal være gitignored.

Preflight kontrollerer desuden, at CI-imaget har de nødvendige værktøjer, herunder curl, Git, .NET, Node, npm, npx og tar. Reviewer-tildeling bruger jq.

Start pipelinen på main via Run pipeline > update-dependencies. Den kan også indgå i scheduled-maintenance.

Opret eventuelt devops/dependency-updates.json. Uden pakkespecifikke regler er standarden stabile minor- og patch-opdateringer inden for den nuværende major-version. Prereleases vælges ikke.

{
"$schema": "https://ecreociscripts.blob.core.windows.net/ci-scripts/dependency-updates.schema.json",
"nuget": {
"packages": {
"Umbraco.Cms": { "allowedUpdates": "patch" }
}
},
"npm": {
"packages": {
"swiper": { "allowedUpdates": "patch" },
"alpinejs": { "allowedUpdates": "minor" },
"legacy-package": { "allowedUpdates": "none" }
}
},
"cdnjs": {
"packages": {
"tiny-slider": { "allowedUpdates": "patch" }
}
}
}

Pakkenavnene er eksempler. Brug navnene fra projektets egne pakker.

allowedUpdates Tilladte ændringer
minor Minor og patch inden for nuværende major. Standard
patch Patch inden for nuværende minor
none Ingen automatisk ændring. For CDN gælder det også versionspinning og skift af udbyder

Schemaet er tilgængeligt som Ecreos dependency-update-schema. Det beskriver også includePaths og excludePaths under de enkelte økosystemer.

Script Opgave
100_preflight.sh Kontrollerer værktøjer, konfiguration, rent arbejdstræ og API-adgang
200_update-nuget.sh Opdaterer NuGet-afhængigheder
300_update-npm.sh Opdaterer npm-afhængigheder
400_enforce-policy.sh Håndhæver projektets opdateringsregler
500_update-cdn.sh Opdaterer understøttede CDN-referencer
600_create-pr.sh Opretter eller opdaterer branch og PR

Projekter med et ældre lokalt override af 500_create-pr.sh skal tilpasses til 600_create-pr.sh.

Første opdatering opretter en branch med præfikset ecreo/dependency-updates- og en PR. Senere kørsler opdaterer den eksisterende åbne PR og dens genererede commit og beskrivelse.

Branchopdateringen bruger en force-with-lease-kontrol og stopper, hvis branchen indeholder manuelle commits. Lav derfor ikke manuelle rettelser direkte på automationsbranchen, hvis den fortsat skal kunne opdateres automatisk. Ekstra genererede commits, som kun opdaterer bitbucket-pipelines.yml med den normale pipeline-opdateringsbesked, er understøttet.

PR-beskrivelsen viser ændrede pakker. For npm vises direkte afhængigheder fra package.json; transitive ændringer fra package-lock.json får ikke hver sin række. Ved CDN-skift af udbyder vises gammel og ny URL. En eventuel pipeline-template-opdatering har sin egen sektion.

Ved højst to forskellige opdateringer kan commit-beskeden indeholde pakkenavne og målversioner, hvis hele emnelinjen kan holdes på højst 100 tegn. Ellers bruges en samlet besked med de berørte økosystemer. JIRA_KEY bruges som prefix, når den er udfyldt.

Reviewers tildeles efter reglerne i Variabler og miljøer. Eksisterende PRs uden reviewers kan få dem tilføjet, selv om der ikke er nye pakkeændringer.

Læs PR-beskrivelsen og diffen, kontrollér valideringen, og afprøv de berørte dele af applikationen før merge. Major-opdateringer kræver særskilt håndtering. CDN-opdateringens begrænsninger er beskrevet i CDN-opdateringer.