diff --git a/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-1.png b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-1.png new file mode 100644 index 0000000..6d852bd Binary files /dev/null and b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-1.png differ diff --git a/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-2.png b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-2.png new file mode 100644 index 0000000..aab2833 Binary files /dev/null and b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-2.png differ diff --git a/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-3.png b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-3.png new file mode 100644 index 0000000..8a8de7f Binary files /dev/null and b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-model-3.png differ diff --git a/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-overview.png b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-overview.png new file mode 100644 index 0000000..cae8d39 Binary files /dev/null and b/content/library/governance/recommendations/governance-administration-essentials/enterprise-account-overview.png differ diff --git a/content/library/governance/recommendations/governance-administration-essentials/index.md b/content/library/governance/recommendations/governance-administration-essentials/index.md index aae9f49..48c6924 100644 --- a/content/library/governance/recommendations/governance-administration-essentials/index.md +++ b/content/library/governance/recommendations/governance-administration-essentials/index.md @@ -80,83 +80,7 @@ Each section offers opinionated, prescriptive guidance on architecture and polic GHEC provides a number of flexible configuration options, allowing each business to configure the platform to best meet their unique needs. While there is no single "best" way to implement GHEC, there are common patterns and steps you should carefully consider. GHEC has four structural layers that should be treated as separate control planes: enterprise account, organization, repository, and team. Each provides different levels of administrative control and policy enforcement, and understanding how they interact is essential for sound governance. -
- -
-
-
-
- Enterprise account - Billing · licensing · IdP integration · enterprise-wide policy · audit log -
-
- Enterprise teams - Defined at the enterprise level · span multiple organizations -
-
-
-
- Organization - Org-level policies · members · billing rollup -
-
-
Teams
-
Repository
-
Repository
-
···
-
-
-
-
- Organization - Org-level policies · members · billing rollup -
-
-
Teams
-
Repository
-
Repository
-
···
-
-
-
More…
-
-
-
-
-
+![GHEC structural layers: enterprise account, enterprise teams, organizations, repositories, and teams](enterprise-account-overview.png) ### Enterprise account @@ -274,84 +198,7 @@ The following three models represent the most common organization architecture p ### Model 1: Single organization -
- -
-
-
- Enterprise account -
-
-
-
- Organization - All repositories -
-
-
Teams
-
Repo
-
Repo
-
Repo
-
···
-
-
-
-
-
-
    -
  • All or most repositories in one org
  • -
  • Teams control access to individual repos
  • -
  • Recommend an “all-members” team for open repos
  • -
  • Base permissions typically set to None or Read
  • -
  • Enterprise-level rulesets enforce policy at scale
  • -
  • Works well when one org meets all compliance needs
  • -
-
-
Optional: add a small number of restricted or location-specific orgs only when legal or operational requirements demand a separate boundary.
-
-
-
-
-
-
+![Model 1: Single organization](enterprise-account-model-1.png) A single organization serves all or the vast majority of repositories. This model works well when your collaboration, compliance, and access needs can be managed within a single administrative boundary using teams and repository permissions. @@ -361,129 +208,7 @@ Slight variations on this model exist to handle extenuating circumstances. For e ### Model 2: Red-green-sandbox-archive -
- -
-
-

Enterprise account

-
-
-
-
- Sandbox - Sandbox repos -
-
-
Repo
-
Repo
-
···
-
-
-
Sandbox
-
    -
  • Collaborative
  • -
  • Unstructured naming
  • -
  • Governed by broad AD groups
  • -
  • No base read permissions
  • -
  • Not viable for production usage
  • -
  • No consumption services
  • -
-
-
-
-
- Green - Internal repos -
-
-
Repo
-
Repo
-
···
-
-
-
Innersource (Internal)
-
    -
  • Majority of code here
  • -
  • Standardized naming
  • -
  • Base read permissions
  • -
  • Governed by granular ALM groups
  • -
  • Viable for production usage
  • -
  • Topics for discoverability
  • -
  • Consumption enabled
  • -
-
-
-
-
- Red - Private repos -
-
-
Repo
-
Repo
-
···
-
-
-
Restricted (Highly confidential)
-
    -
  • Reduced set of repos
  • -
  • Standardized naming
  • -
  • Governed by granular ALM groups
  • -
  • No base read permission
  • -
  • Consumption enabled
  • -
-
-
-
-
- Archive - Deprecated repos -
-
-
Repo
-
Repo
-
-
-
Not accessible
-
    -
  • Restricted to enterprise Admins
  • -
-
-
-
-
-
+![Enterprise account: Red-green-sandbox-archive model](enterprise-account-model-2.png) This model uses two primary organizations plus a sandbox: @@ -494,92 +219,7 @@ This model uses two primary organizations plus a sandbox: ### Model 3: Portfolio company -
- -
-
-
- Enterprise account -
-
-
- BU Org 1 - Division repos -
-
-
Repo
-
Repo
-
···
-
-
-
-
- BU Org 2 - Division repos -
-
-
Repo
-
Repo
-
···
-
-
-
-
- BU Org N - Division repos -
-
-
Repo
-
Repo
-
···
-
-
-
-
-
-
Shared Sandbox
-
Single sandbox org shared across all business units
-
-
-
Archives: keep deprecated repositories in the primary BU org rather than a separate archive org to minimize active organization count.
-
-
-
-
+![Model 3: Portfolio company](enterprise-account-model-3.png) There are a few scenarios in which the red-green model may not adequately match your company's internal structures. Very large companies with tens of thousands of employees divided into relatively static business units may find this model insufficient. Also in this camp are portfolio companies with operating units that function independently of one another. These companies may also experience regular mergers, acquisitions, and divestitures. diff --git a/package-lock.json b/package-lock.json index 0ff9b1d..47b8e00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "@babel/preset-env": "^7.28.3", "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", - "@playwright/test": "^1.56.0", + "@playwright/test": "^1.60.0", "@tailwindcss/cli": "^4.1.14", "@types/jest": "^30.0.0", "@types/node": "^24.7.1", @@ -3032,13 +3032,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.0.tgz", - "integrity": "sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.56.0" + "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -9359,13 +9359,13 @@ } }, "node_modules/playwright": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.0.tgz", - "integrity": "sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.56.0" + "playwright-core": "1.60.0" }, "bin": { "playwright": "cli.js" @@ -9378,9 +9378,9 @@ } }, "node_modules/playwright-core": { - "version": "1.56.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.0.tgz", - "integrity": "sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==", + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 516207f..87328b4 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@babel/preset-env": "^7.28.3", "@babel/preset-react": "^7.27.1", "@babel/preset-typescript": "^7.27.1", - "@playwright/test": "^1.56.0", + "@playwright/test": "^1.60.0", "@tailwindcss/cli": "^4.1.14", "@types/jest": "^30.0.0", "@types/node": "^24.7.1",