קידום חבילות
Azure Artifacts כולל את הרעיון של קידום חבילות לתצוגות כדי לציין שגירסה מסוימת היא ברמת איכות מסוימת.
על ידי קידום סלקטיבי של חבילות, אתה יכול לתכנן מתי לחבילות יש איכות מסוימת ומוכנות לשחרור ונתמכות על ידי הצרכנים.
יסודות קידום החבילות
באפשרותך לקדם חבילות לאחת מהתצוגות הזמינות כמחוון האיכות.
קונספט קידום:
- שערים איכותיים: הנופים מייצגים רמות איכות שונות.
- פעולה מפורשת: קידום הוא החלטה מפורשת.
- אין שינוי גרסה: גרסת החבילה נשארת זהה.
- שינוי מטא נתונים: רק שיוך התצוגה משתנה.
תצוגות ברירת מחדל לקידום מכירות
שתי התצוגות של הפצהוקדם-הפצה עשויות להספיק, אך באפשרותך ליצור תצוגות נוספות כאשר אתה מעוניין ברמות איכות עדינות יותר במידת הצורך, כגון alpha וbeta- .
תהליכי עבודה נפוצים של קידום:
@Local → @Prerelease → @Release
@Local → @Alpha → @Beta → @RC → @Release
כללי נראות החבילה
חבילות יוצגו תמיד בתצוגה מקומית, אך רק בתצוגה מסוימת לאחר קידום.
רשימת חבילות מבוססת תצוגה
בהתאם לכתובת ה- URL המשמשת להתחברות להזנה, החבילות הזמינות יופיעו.
מטריצת נראות:
| מצב חבילה | @Local | @Prerelease | @Release |
|---|---|---|---|
| פורסם זה עתה | כן | לא | לא |
| מקודם לקדם-הפצה | כן | כן | לא |
| קודם להפצה | כן | כן | כן |
עקרונות עיקריים:
- @Local תמיד מציג את הכל: כל חבילה מופיעה ללא @Local קשר למבצע.
- דעות אחרות דורשות קידום: יש לקדם חבילות במפורש כדי שיופיעו בתצוגות אחרות.
- נראות מצטברת: קידום ל @Release אינו מסיר מ- @Prerelease.
מקורות ותצוגות במעלה הזרם
מקורות במעלה הזרם יוערכו רק בעת שימוש בתצוגת @Local של ההזנה.
זרימת עבודה של חבילות במעלה הזרם
לאחר הורדתם ואחסון במטמון בתצוגה @Local, באפשרותך לראות ולפתור את החבילות בתצוגות אחרות לאחר קידומם אליה.
מחזור החיים של החבילה במעלה הזרם:
- בקש חבילה: חבילת בקשות צרכנים מהתצוגה @Local .
- בדיקה במעלה הזרם: Azure Artifacts בודק מקורות במעלה הזרם אם הם אינם בהזנה.
- הורדה ומטמון: החבילה הורדה ממעלה הזרם ומאוחסנת במטמון ב @Local- .
- מקומי בלבד: החבילה זמינה כעת בתצוגה @Local .
- קידום: ניתן לקדם את החבילה אל @Prerelease או @Release תצוגות.
זרימת עבודה לדוגמה:
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
הערות חשובות:
- במעלה הזרם רק עם @Local: תצוגות אחרות לא מפעילות הערכת מקור במעלה הזרם.
- מטמון תחילה: לאחר האחסון במטמון, החבילה מטופלת כמו כל חבילת הזנה אחרת.
- בקרת קידום: קבעו אילו חבילות במעלה הזרם מאושרות לייצור.
החלטה מתי לקדם
זה תלוי בך להחליט איך ומתי לקדם חבילות לתצוגה ספציפית.
קריטריונים לקידום
טריגרים נפוצים לקידום:
קדם ל @Prerelease
- בנה הצלחה: החבילה נבנתה בהצלחה בצנרת CI.
- מבחני יחידה עברו: כל מבחני היחידה עוברים.
- איכות קוד: שערי איכות קוד נפגשו (כיסוי, ניתוח סטטי).
- אימות ראשוני: מבחני עשן בסיסיים עברו.
קדם ל @Release
- בדיקות אינטגרציה: בדיקות האינטגרציה עברו בהצלחה.
- אישור QA: צוות אבטחת איכות מאשר.
- סריקת אבטחה: סריקת פגיעות אבטחה עברה.
- ביצועים מאומתים: מבחני ביצועים עומדים בדרישות.
- התיעוד מלא: הערות שחרור ותיעוד הושלמו.
קידום ידני לעומת קידום אוטומטי
קידום ידני:
- שיקול דעת אנושי: דורש החלטה אנושית.
- קריטריונים מורכבים: כאשר קשה להפוך קריטריונים לאוטומטיים.
- חבילות בסיכון גבוה: חבילות קריטיות הדורשות בדיקה נוספת.
קידום אוטומטי:
- קריטריונים עקביים: כאשר הקריטריונים ברורים וניתנים לבדיקה.
- מהדורות תכופות: צוותי פיתוח מהירים.
- חבילות בסיכון נמוך יותר: ספריות פנימיות עם כיסוי בדיקה טוב.
אוטומציה של קידום חבילות
ניתן להפוך תהליך זה לאוטומטי באמצעות משימת Azure Pipelines כחלק מקו הצינור של הבנייה.
שימוש בקווי צינור של Azure לקידום
משימת קווי צינור של Azure לקידום:
# 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
דוגמה לצינור רב-שלבי
צנרת מלאה עם שערי קידום:
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
קידום ידני באמצעות ממשק אינטרנט
קדם חבילות באמצעות פורטל Azure DevOps:
- נווט אל חפצים: עבור אל תוצרים ב- Azure DevOps.
- בחר פיד: בחר את ההזנה המכילה את החבילה שלך.
- מצא חבילה: אתר את גירסת החבילה לקידום.
- פרטי החבילה: בחר את החבילה כדי להציג פרטים.
- לחצן 'קדם': בחר בלחצן "קדם".
- בחר תצוגה: בחר את תצוגת היעד (@Prerelease או @Release).
- לאשר: אשר את הקידום.
מדיניות קידום ושימור
חבילות שקודמו לתצוגה לא יימחקו בהתבסס על מדיניות השמירה.
הגנת שמירה
המבצע מספק הגנה על שימור:
- חבילות @Local: בכפוף למדיניות שמירה.
- חבילות קידום: מוגן מפני מחיקה אוטומטית.
- אחסון לטווח ארוך: חבילות ששוחררו נשמרו ללא הגבלת זמן.
אופן פעולה של מדיניות שמירה:
| הצג | מדיניות שמירה | מוגן |
|---|---|---|
| @Local רק | מחיל | לא |
| @Prerelease | חל על @Local, לא @Prerelease | כן |
| @Release | חל על @Local, לא @Release | כן |
דוגמה:
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
קביעת תצורה של מדיניות שמירה
הגדר מדיניות שמירה לכל פיד:
- הגדרות הזנה: נווט אל הגדרות הפיד.
- מדיניות שמירה: בחר מקטע מדיניות שמירה.
- להגדיר: הגדר ימים מקסימליים לשמירת חבילות ב.@Local
- שמר: החל את המדיניות.
מומלצות:
- קדם חבילות חשובות: ודא שחבילות חשובות מקודמות.
- ניקיון קבוע: אפשר למדיניות שמירה לנקות חבילות שלא קודמו.
- איזון אחסון: איזון בין עלויות האחסון לצרכי השמירה.
שיטות מומלצות לקידום
קריטריונים ברורים:
- קריטריונים לקידום מסמכים: הגדר איזו חבילה מתאימה לכל תצוגה.
- יישום עקבי: החל קריטריונים באופן עקבי בכל החבילות.
- יישור צוותים: ודא שהצוות מבין את זרימות העבודה של הקידום.
אוטומציה:
- בצע אוטומציה במידת האפשר: הפוך את הקידום לאוטומטי לפי קריטריונים ברורים.
- שערים ידניים לחבילות קריטיות: השתמש באישור ידני לקידומי הפקה.
- בדיקה לפני קידום: יש לבדוק תמיד לפני הקידום.
תקשורת:
- הערות שחרור: כלול הערות שחרור בעת קידום ל- @Release.
- יומני שינויים: שמור על יומן שינויים של מה שהשתנה בכל גרסה.
- הודעות: הודע לצרכנים כאשר חבילות מקודמות ל- @Release.
אסטרטגיית החזרה למצב קודם:
- שמור גרסאות קודמות: אל תמחק גרסאות קודמות @Release .
- חזרה מהירה למצב קודם: אפשר לצרכנים לחזור במהירות לגרסאות קודמות.
- הצמדת גרסה: תמכו בצרכנים המוצמדים לגרסאות ספציפיות.
ניטור מבצעי חבילות
היסטוריית קידום מסלול:
- יומני ביקורת: Azure DevOps רושם את כל פעילויות הקידום.
- היסטוריית החבילות: צפו בהיסטוריית המבצעים של כל חבילה.
- דוחות: הפקת דוחות על דפוסי קידום.
מדדים למעקב:
- הגיע הזמן לקדם: כמה זמן מ @Local ל @Release.
- כשלים בקידום: חבילות שאינן עומדות בקריטריונים לקידום.
- שיעור החזרה למצב קודם: באיזו תדירות צריך להחזיר חבילות.
- מהירות קידום: מספר קידומי מכירות לפרק זמן.