הגדרת Azure DevOps: לוחות, מאגרים, צינורות, ארטיפקטים

כאשר צוות עובר ל-Azure DevOps מכלים שונים, עולה השאלה: כיצד להגדיר את הפלטפורמה כך שתתאים לתהליכים שלכם במקום להתאים לתבניות סטנדרטיות. אנו מגדירים את Azure DevOps במפתח מלא: Boards, Repos, Pipelines ו-Artifacts, מותאמים למבנה הארגוני ולמאפייני הצוות שלכם. צוות המומחים שלנו מטפל בכל המחזור ומבטיח פעילות יציבה עם תמיכה מתמשכת.

היכולות שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

צוותים שעוברים מ-Jira + GitHub + Jenkins ל-Azure DevOps מצפים לעיתים קרובות שהכל יעבוד ישר מהקופסה. אבל "הכל במקום אחד" לא אומר שזה מגדיר את עצמו—הקמת Boards, Repos, Pipelines ו-Artifacts כך שיתאימו לתהליכי הצוות שלך דורשת מומחיות והבנה ארכיטקטונית. למהנדסים שלנו יש ניסיון של 10+ שנים ב-DevOps והם השלימו בהצלחה למעלה מ-50 פרויקטי הגירה ל-Azure DevOps. אנו מבטיחים מעבר חלק ותצורה אופטימלית לצרכים הספציפיים שלך.

מבנה: Organization, Project, Team

Organization — הרמה העליונה, מקבילה ל"חברה" ב-Jira. כתובת URL אחת כמו dev.azure.com/mycompany. חיוב, מדיניות אבטחה, משתמשים—הכל ברמת ה-Organization.

Project — יחידת העבודה המרכזית. מכיל Boards, Repos, Pipelines, Artifacts ו-Test Plans. מוצרים שונים צריכים פרויקטים נפרדים, לא הכל דחוס לתוך אחד. ערבוב של צוותים לא קשורים בפרויקט אחד הוא טעות נפוצה שקשה לתקן מאוחר יותר—work items, משימות ו-pipelines מתחילים להפריע זה לזה.

Team — תת-קבוצה של פרויקט עם Boards, Sprint Backlog והגדרות משלו. פרויקט אחד יכול להכיל מספר Teams (frontend-team, backend-team, devops-team).

Boards: Agile, Scrum או CMMI

בעת יצירת פרויקט, אתה בוחר תבנית תהליך. עבור רוב הצוותים—Scrum (עם Sprint Backlogs, Velocity ו-Burndown) או Agile (גמיש יותר, עם User Stories ו-Tasks). CMMI מיועד לתהליכים פורמליים עם בקשות שינוי ותהליכי אישור.

תצורה ספציפית לצוות:

Process → Work Item Types → добавить кастомные поля
Board → Column settings → настроить WIP limits
Sprints → создать спринты с датами
Area Paths → структура по компонентам (backend, frontend, infra)
Iteration Paths → иерархия спринтов (Q1 → Sprint 1, Sprint 2)

Area Paths — חשובים במיוחד לסינון: כל Team עובד עם Area משלו, ושומר על ה-Boards שלהם נפרדים.

איך להגדיר Branch Policies ב-Azure Repos?

Azure Repos תומך ב-Git (וב-TFVC legacy, שאנו ממליצים לא להשתמש בו). התצורה המרכזית היא Branch Policies על Process → Work Item Types → добавить кастомные поля Board → Column settings → настроить WIP limits Sprints → создать спринты с датами Area Paths → структура по компонентам (backend, frontend, infra) Iteration Paths → иерархия спринтов (Q1 → Sprint 1, Sprint 2) :

  • מספר מינימלי של reviewers: 2 (לקוד production)
  • בדיקה ל-linked work items: שיוך חובה של PR למשימה ב-Boards
  • בדיקה לפתרון תגובות: אין merge ללא תגובות פתורות
  • Build validation: הפעלה אוטומטית של pipeline על כל PR
---
# Политика через Azure CLI az repos policy approver-count create \
--allow-downvotes false \
--blocking true \
--branch main \
--creator-vote-counts false \
--enabled true \
--minimum-approver-count 2 \
--project myproject \
--repository-id <repo-id>

מה לבחור: YAML או Classic Pipelines?

Classic pipelines (דרך ה-UI) מוגדרים כ-deprecated. עבור פרויקטים חדשים אנו תמיד משתמשים ב-YAML pipelines, המאוחסנים ב-repository כ-main. זה מאפשר code review ל-pipelines, היסטוריית שינויים ושימוש חוזר בתבניות. מידע נוסף על סכמת YAML ניתן למצוא בתיעוד הרשמי.

פרמטר Classic Pipelines YAML Pipelines
אחסון ב-Azure DevOps UI ב-repository (azure-pipelines.yml)
Code review לא כן, דרך PR
היסטוריית שינויים לא בהיסטוריית Git
תמיכה בתבניות לא כן

מבנה YAML בסיסי:

---
trigger:
  branches:
    include:
      - main
      - develop
pool:
  vmImage: ubuntu-latest
stages:
  - stage: Build
    jobs:
      - job: BuildJob
        steps:
          - task: Docker@2
            inputs:
              command: buildAndPush
              repository: myapp
              containerRegistry: myacr-connection
              tags: |
                $(Build.BuildId)
                latest
  - stage: Deploy
    dependsOn: Build
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
    jobs:
      - deployment: DeployProd
        environment: production
        strategy:
          runOnce:
            deploy:
              steps:
                - task: HelmDeploy@0
                  inputs:
                    command: upgrade
                    chartName: myapp
                    releaseName: myapp-prod

Environments ואישורים ב-Pipelines

תחת Pipelines → Environments, צור environment בשם # Политика через Azure CLI az repos policy approver-count create \ --allow-downvotes false \ --blocking true \ --branch main \ --creator-vote-counts false \ --enabled true \ --minimum-approver-count 2 \ --project myproject \ --repository-id <repo-id> . הגדר Approvals ובדיקות:

  • Approvals: רשימת אנשים, שכל אחד מהם חייב לאשר את ה-deployment
  • בדיקת שעות עבודה: deployment מותר רק בשעות עבודה (לדוגמה, א'-ה' 09:00-18:00)
  • נעילה בלעדית: רק deployment אחד ל-environment זה בכל פעם

מקרה: עבור לקוח fintech, החלפנו pipeline legacy של Jenkins ב-YAML pipeline רב-שלבי, וקיצרנו את זמן ה-deployment מ-30 דקות ל-5 דקות, ואפשרנו rollback אוטומטי במקרה של כשל. זה הושג על ידי parallelization של שלבי build ושימוש ב-deployment slots עם החלפה מיידית.

Artifacts: רישום חבילות פנימי

Azure Artifacts יוצר feeds פרטיים עבור npm, NuGet, Maven, Python ו-Universal Packages. הצוות שלך מפרסם ספריות פנימיות ל-Artifacts במקום ל-npm/PyPI ציבורי.

---
# Публикация npm-пакета в Artifacts feed
- task: Npm@1
  inputs:
    command: publish
    publishRegistry: useFeed
    publishFeed: myorg/myfeed
---

Upstream sources מאפשרים proxying של רישומים ציבוריים דרך ה-Artifacts feed—כך ש-azure-pipelines.yml עובר דרך ה-proxy הפנימי, עם caching של חבילות ובקרת גישה לתלויות חיצוניות.

Service Connections: אינטגרציות ענן

כדי לבצע deployment ל-Azure, AWS, GCP או Kubernetes, יש צורך ב-Service Connections—אחסון מאובטח של credentials הנגיש ל-pipelines ללא secrets מוקשים. מוגדר ב-Project Settings → Service Connections.

עבור Azure Kubernetes Service — Service Connection מסוג Kubernetes עם kubeconfig או service account. עבור Azure Container Registry — חיבור ACR עם OAuth אוטומטי. עבור AWS — חיבור AWS Credentials עם תפקיד IAM.

מה כלול בהקמת Azure DevOps?

רכיב מה אנחנו עושים תוצאה
Organization & Project יצירת מבנה, הגדרת אבטחה, מדיניות פרויקט מוכן לשימוש עם areas ו-iterations
Boards בחירת תבנית, הגדרת WIP limits, sprints לוח פונקציונלי עם backlog ו-board
Repos ייבוא קוד, הגדרת branch policies, טריגרים ל-CI Repository עם main מוגן ובדיקות אוטומטיות
Pipelines כתיבת YAML pipelines, הגדרת stages ו-environments CI/CD מ-commit ל-production עם אישורים
Artifacts יצירת feeds, הגדרת upstream sources רישום פרטי לחבילות פנימיות
Service Connections חיבור עננים, רישומי containers גישה מאובטחת ללא secrets בקוד

לוחות זמנים

הקמה בסיסית של פרויקט חדש (Boards, Repos עם branch policies, Pipeline אחד) — יום אחד. תצורה מלאה של organization עם מספר פרויקטים, Artifacts feed, Environments עם אישורים ואינטגרציית AKS — 2-3 ימים. הגירה מ-Jira + GitHub + Jenkins דורשת הערכה נפרדת. העלות מחושבת באופן אישי. צור קשר לייעוץ ולוחות זמנים מדויקים לפרויקט שלך. הזמן מאיתנו הקמת Azure DevOps—אנו מבטיחים איכות ותמיכה לאחר היישום.