Promovați pachetele
Azure Artifacts are noțiunea de a promova pachete în vizualizări pentru a indica faptul că o versiune are un anumit nivel de calitate.
Prin promovarea selectivă a pachetelor, puteți planifica când pachetele au o anumită calitate și sunt gata să fie lansate și susținute de consumatori.
Fundamentele promovării pachetelor
Puteți promova pachete la una dintre vizualizările disponibile ca indicator de calitate.
Concept de promovare:
- Porți de calitate: Vizualizările reprezintă diferite niveluri de calitate.
- Acțiune explicită: Promovarea este o decizie explicită.
- Nicio modificare a versiunii: Versiunea pachetului rămâne aceeași.
- Modificarea metadatelor: Se modifică doar asocierea de vizualizare.
Vizualizări implicite pentru promovare
Cele două vizualizări Release și Prerelease ar putea fi suficiente, dar puteți crea mai multe vizualizări atunci când doriți niveluri de calitate mai fine, dacă este necesar, cum ar fi alpha și beta.
Fluxuri de lucru comune de promovare:
@Local → @Prerelease → @Release
@Local → @Alpha → @Beta → @RC → @Release
Reguli de vizibilitate a pachetelor
Pachetele vor apărea întotdeauna în vizualizarea locală, dar numai într-o anumită vizualizare după ce au fost promovate.
Listarea pachetelor bazată pe vizualizare
În funcție de adresa URL utilizată pentru a vă conecta la flux, vor fi listate pachetele disponibile.
Matricea de vizibilitate:
| Starea pachetului | @Local | @Prerelease | @Release |
|---|---|---|---|
| Tocmai publicat | Da | Nu | Nu |
| Promovat în prelansare | Da | Da | Nu |
| Promovat la lansare | Da | Da | Da |
Principii cheie:
- @Local afișează întotdeauna toate: Fiecare pachet apare indiferent @Local de promoție.
- Alte vizualizări necesită promovare: Pachetele trebuie promovate în mod explicit pentru a apărea în alte vizualizări.
- Vizibilitate cumulativă: Promovarea în @Release nu elimină din @Prerelease.
Surse și vizualizări din amonte
Sursele din amonte vor fi evaluate numai atunci când se utilizează vizualizarea @Local a fluxului.
Fluxul de lucru al pachetelor în amonte
După ce au fost descărcate și stocate în cache în vizualizarea @Local, puteți vedea și rezolva pachetele în alte vizualizări după ce ați fost promovat la aceasta.
Ciclul de viață al pachetului din amonte:
- Solicitați pachetul: Pachetul de solicitări al consumatorilor din @Local vizualizare.
- Verificare în amonte: Azure Artifacts verifică sursele din amonte dacă nu sunt în flux.
- Descărcați și stocați în cache: Pachet descărcat din amonte și stocat în cache în @Local.
- Numai local: Pachetul este acum disponibil la @Local vedere.
- Promovare: Pachetul poate fi promovat sau @Prerelease@Release vizualizări.
Exemplu de flux de lucru:
Developer requests lodash@4.17.21 from @Local view
↓
Azure Artifacts checks npmjs.com (upstream source)
↓
Package downloaded and cached in @Local view
↓
Package available in feed, can be promoted
↓
Promote to @Release for production use
Note importante:
- Numai în amonte cu @Local: Alte vizualizări nu declanșează evaluarea sursei din amonte.
- Cache mai întâi: Odată stocat în cache, pachetul este tratat ca orice alt pachet de flux.
- Controlul promovării: Controlați ce pachete din amonte sunt aprobate pentru producție.
Decizia de a promova
Depinde de tine să decizi cum și când să promovezi pachetele într-o anumită vizualizare.
Criterii de promovare
Declanșatoare comune de promovare:
Promovați la @Prerelease
- Construiți succesul: Pachet construit cu succes în conducta CI.
- Teste unitare promovate: Toate testele unitare trec.
- Calitatea codului: Porți de calitate a codului întâlnite (acoperire, analiză statică).
- Validare inițială: Testele de fum de bază au trecut.
Promovați la @Release
- Teste de integrare: Testele de integrare au trecut cu succes.
- Aprobarea QA: Echipa de asigurare a calității aprobă.
- Scanare de securitate: Scanarea vulnerabilității de securitate a trecut.
- Performanță validată: Testele de performanță îndeplinesc cerințele.
- Documentație completă: Note de lansare și documentație finalizate.
Promovare manuală versus promovare automată
Promovare manuală:
- Judecata umană: Necesită decizie umană.
- Criterii complexe: Când criteriile sunt dificil de automatizat.
- Pachete cu risc ridicat: Pachete critice care necesită o examinare suplimentară.
Promovare automată:
- Criterii consistente: Când criteriile sunt clare și testabile.
- Lansări frecvente: Echipe de dezvoltare de mare viteză.
- Pachete cu risc mai mic: Biblioteci interne cu o acoperire bună a testelor.
Automatizarea promovării pachetelor
Acest proces poate fi automatizat utilizând o activitate Azure Pipelines ca parte a conductei de compilare.
Utilizarea Azure Pipelines pentru promovare
Activitate Azure Pipelines pentru promovare:
# Promote package to Prerelease view
- task: UniversalPackages@0
inputs:
command: "publish"
publishDirectory: "$(Build.ArtifactStagingDirectory)"
feedsToUsePublish: "internal"
vstsFeedPublish: "MyFeed"
vstsFeedPackagePublish: "my-package"
packagePublishDescription: "Package from build $(Build.BuildNumber)"
# Promote to Release view after tests
- task: AzureCLI@2
inputs:
azureSubscription: "Azure Subscription"
scriptType: "bash"
scriptLocation: "inlineScript"
inlineScript: |
az artifacts universal promote \
--organization https://dev.azure.com/MyOrg \
--feed MyFeed \
--name my-package \
--version $(packageVersion) \
--view Release
Exemplu de conductă în mai multe etape
Conductă completă cu porți de promovare:
trigger:
- main
stages:
# Build and publish to Local
- stage: Build
jobs:
- job: BuildPackage
steps:
- script: dotnet pack -o $(Build.ArtifactStagingDirectory)
displayName: "Build package"
- task: NuGetCommand@2
inputs:
command: "push"
packagesToPush: "$(Build.ArtifactStagingDirectory)/**/*.nupkg"
nuGetFeedType: "internal"
publishVstsFeed: "MyFeed"
# Promote to Prerelease after unit tests
- stage: PromoteToPrerelease
dependsOn: Build
jobs:
- job: RunTests
steps:
- script: dotnet test
displayName: "Run unit tests"
- task: AzureCLI@2
displayName: "Promote to Prerelease"
inputs:
azureSubscription: "Azure Subscription"
scriptType: "bash"
scriptLocation: "inlineScript"
inlineScript: |
az artifacts universal promote \
--organization https://dev.azure.com/MyOrg \
--feed MyFeed \
--name MyPackage \
--version $(Build.BuildNumber) \
--view Prerelease
# Promote to Release after integration tests and approval
- stage: PromoteToRelease
dependsOn: PromoteToPrerelease
jobs:
- job: IntegrationTests
steps:
- script: dotnet test --filter Category=Integration
displayName: "Run integration tests"
- deployment: PromoteToRelease
dependsOn: IntegrationTests
environment: "Production-Approval"
strategy:
runOnce:
deploy:
steps:
- task: AzureCLI@2
displayName: "Promote to Release"
inputs:
azureSubscription: "Azure Subscription"
scriptType: "bash"
scriptLocation: "inlineScript"
inlineScript: |
az artifacts universal promote \
--organization https://dev.azure.com/MyOrg \
--feed MyFeed \
--name MyPackage \
--version $(Build.BuildNumber) \
--view Release
Promovare manuală prin interfață web
Promovați pachete prin portalul Azure DevOps:
- Navigați la Artefacte: Accesați Artefacte în Azure DevOps.
- Selectați fluxul: Alegeți fluxul care conține pachetul dvs.
- Găsiți pachetul: Găsiți versiunea pachetului de promovat.
- Detalii pachet: Selectați pachetul pentru a vizualiza detaliile.
- Butonul Promovare: Selectați butonul "Promovați".
- Selectați vizualizarea: Alegeți vizualizarea țintă (@Prerelease sau @Release).
- Confirma: Confirmați promoția.
Politici de promovare și păstrare
Pachetele care au fost promovate într-o vizualizare nu vor fi șterse pe baza politicilor de păstrare.
Protecția retenției
Promoția oferă protecție de păstrare:
- @Local pachete: Sub rezerva politicilor de păstrare.
- Pachete promovate: Protejat împotriva ștergerii automate.
- Depozitare pe termen lung: Pachetele eliberate păstrate pe termen nelimitat.
Comportamentul politicii de păstrare:
| Vizualizare | Conservare | Protejat |
|---|---|---|
| @Local numai | Se aplică | Nu |
| @Prerelease | Se aplică la @Local, nu @Prerelease | Da |
| @Release | Se aplică la @Local, nu @Release | Da |
Exemplu:
Feed retention policy: Keep only last 30 days in @Local
Package version 1.0.0:
- Published to @Local on Day 1
- Promoted to @Release on Day 5
- Day 31: Still available because promoted to @Release
- Would be deleted if not promoted
Configurarea politicilor de păstrare
Setați politici de păstrare per flux:
- Setări feed: Navigați la setările fluxului.
- Conservare: Selectați secțiunea politică de păstrare.
- Configura: Setați numărul maxim de zile pentru păstrarea pachetelor în @Local.
- Salva: Aplicați politica.
Cele mai bune practici:
- Promovați pachete importante: Asigurați-vă că pachetele importante sunt promovate.
- Curățare regulată: Lăsați politicile de păstrare să curețe pachetele nepromovate.
- Stocarea soldului: Echilibru între costurile de depozitare și nevoile de retenție.
Cele mai bune practici de promovare
Criterii clare:
- Criterii de promovare a documentelor: Definiți ce califică un pachet pentru fiecare vizualizare.
- Aplicare consecventă: Aplicați criterii în mod consecvent în toate pachetele.
- Alinierea echipei: Asigurați-vă că echipa înțelege fluxurile de lucru de promovare.
Automatizare:
- Automatizați atunci când este posibil: Automatizați promovarea pentru criterii clare.
- Porți manuale pentru pachete critice: Utilizați aprobarea manuală pentru promoțiile de producție.
- Testarea înainte de promovare: Testați întotdeauna înainte de a promova.
Comunicare:
- Note de lansare: Includeți note de lansare atunci când promovați în @Release.
- Jurnale de modificare: Păstrați jurnalul modificărilor a ceea ce s-a schimbat în fiecare versiune.
- Notificări: Notificați consumatorii când pachetele sunt promovate în @Release.
Strategia de revenire:
- Păstrați versiunile anterioare: Nu ștergeți versiunile anterioare @Release .
- Revenire rapidă: Permiteți consumatorilor să revină rapid la versiunile anterioare.
- Fixarea versiunii: Sprijină utilizatorii care fixează anumite versiuni.
Monitorizarea promoțiilor pachetelor
Urmăriți istoricul promoțiilor:
- Jurnale de audit: Azure DevOps înregistrează toate activitățile de promovare.
- Istoricul pachetului: Vizualizați istoricul promoțiilor pentru fiecare pachet.
- Rapoarte: Generați rapoarte despre modelele de promovare.
Valori de urmărit:
- E timpul să promovăm: Cât timp de la @Local la @Release.
- Eșecuri de promovare: Pachete care nu îndeplinesc criteriile de promovare.
- Rata de revenire: Cât de des pachetele trebuie să fie refăcute.
- Viteza de promovare: Numărul de promoții pe perioadă de timp.