|
| 1 | +--- |
| 2 | +description: "Required workflow for Azure DevOps work item tracking, Git branching, pull requests, and branch cleanup in the Playwright project." |
| 3 | +applyTo: "**" |
| 4 | +maturity: stable |
| 5 | +--- |
| 6 | + |
| 7 | +# Azure DevOps Workflow |
| 8 | + |
| 9 | +## ADO Organization and Project |
| 10 | + |
| 11 | +* Organization: `MngEnvMCAP675646` |
| 12 | +* Project: `Playwright` |
| 13 | + |
| 14 | +All work items, boards, and test plans live in this project. |
| 15 | + |
| 16 | +## Work Item Hierarchy |
| 17 | + |
| 18 | +Follow this strict hierarchy for every piece of work: |
| 19 | + |
| 20 | +```text |
| 21 | +Epic |
| 22 | + └── Feature |
| 23 | + ├── User Story |
| 24 | + └── Bug |
| 25 | +``` |
| 26 | + |
| 27 | +* Every commit must trace back to a User Story or Bug. |
| 28 | +* Every User Story or Bug must belong to a Feature. |
| 29 | +* Every Feature must belong to an Epic. |
| 30 | +* Create the parent items first if they do not exist before creating child items. |
| 31 | +* Every work item (Epic, Feature, User Story, Bug) must include the tag `Agentic AI`. |
| 32 | + |
| 33 | +## Branching Strategy |
| 34 | + |
| 35 | +Create a feature branch for each work item using this naming convention: |
| 36 | + |
| 37 | +```text |
| 38 | +feature/{work-item-id}-short-description |
| 39 | +``` |
| 40 | + |
| 41 | +Examples: |
| 42 | + |
| 43 | +```text |
| 44 | +feature/1234-citizen-submission-form |
| 45 | +feature/1235-fix-notification-bug |
| 46 | +``` |
| 47 | + |
| 48 | +Rules: |
| 49 | + |
| 50 | +* One branch per User Story or Bug. |
| 51 | +* Use lowercase and hyphens for the description portion. |
| 52 | +* Keep the description concise (three to five words). |
| 53 | +* Branch from `main` unless otherwise specified. |
| 54 | + |
| 55 | +## Commit Messages |
| 56 | + |
| 57 | +Include the ADO work item ID in every commit message using the `AB#` linking syntax: |
| 58 | + |
| 59 | +```text |
| 60 | +feat: add citizen submission form AB#1234 |
| 61 | +fix: correct notification email template AB#1235 |
| 62 | +``` |
| 63 | + |
| 64 | +This links commits to ADO work items automatically through GitHub and Azure DevOps integration. |
| 65 | + |
| 66 | +To auto-close a work item when the PR merges, use `Fixes AB#{id}` in the commit message or PR description: |
| 67 | + |
| 68 | +```text |
| 69 | +feat: add citizen submission form Fixes AB#1234 |
| 70 | +``` |
| 71 | + |
| 72 | +## Pull Request Workflow |
| 73 | + |
| 74 | +1. Push the feature branch to the remote. |
| 75 | +2. Create a pull request targeting `main`. |
| 76 | +3. Reference the work item in the PR description using `Fixes AB#{work-item-id}` to auto-close the work item on merge. |
| 77 | +4. Complete code review and obtain required approvals. |
| 78 | +5. Merge the PR (squash merge preferred for a clean history). |
| 79 | + |
| 80 | +## Post-Merge Branch Cleanup |
| 81 | + |
| 82 | +After the pull request is merged and closed in GitHub: |
| 83 | + |
| 84 | +1. Switch to `main` locally: |
| 85 | + |
| 86 | + ```bash |
| 87 | + git checkout main |
| 88 | + ``` |
| 89 | + |
| 90 | +2. Pull the latest changes: |
| 91 | + |
| 92 | + ```bash |
| 93 | + git pull origin main |
| 94 | + ``` |
| 95 | + |
| 96 | +3. Delete the remote branch: |
| 97 | + |
| 98 | + ```bash |
| 99 | + git push origin --delete feature/{work-item-id}-short-description |
| 100 | + ``` |
| 101 | + |
| 102 | +4. Delete the local branch: |
| 103 | + |
| 104 | + ```bash |
| 105 | + git branch -d feature/{work-item-id}-short-description |
| 106 | + ``` |
| 107 | + |
| 108 | +Always delete both the remote and local feature branch after a successful merge. Do not keep stale branches. |
| 109 | + |
| 110 | +## Quick Reference |
| 111 | + |
| 112 | +| Step | Command or Action | |
| 113 | +|------|-------------------| |
| 114 | +| Create branch | `git checkout -b feature/{id}-description` | |
| 115 | +| Commit with link | `git commit -m "feat: description AB#{id}"` | |
| 116 | +| Push branch | `git push -u origin feature/{id}-description` | |
| 117 | +| Create PR | Target `main`, reference `AB#{id}` | |
| 118 | +| After merge: sync | `git checkout main && git pull origin main` | |
| 119 | +| After merge: delete remote | `git push origin --delete feature/{id}-description` | |
| 120 | +| After merge: delete local | `git branch -d feature/{id}-description` | |
0 commit comments