From d6d9c992f99437d896ee99e320f075b695a5d516 Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Mon, 10 Nov 2025 09:44:31 +0100 Subject: [PATCH 1/5] Add CF Tutorials to CF org automation This prs is adding the `cloudfoundry-tutorials` GitHub org to the CF org automation. Additionally, the pr proposes people who should interest to contribute to the tutorials as reviewers. --- orgs/org_management/org_management.py | 2 +- orgs/org_management/test_org_management.py | 4 +- orgs/orgs.yml | 81 ++++++++++++++++++++++ toc/working-groups/docs.md | 23 ++++++ 4 files changed, 107 insertions(+), 3 deletions(-) diff --git a/orgs/org_management/org_management.py b/orgs/org_management/org_management.py index cb9e36bcc..438b7428c 100644 --- a/orgs/org_management/org_management.py +++ b/orgs/org_management/org_management.py @@ -35,7 +35,7 @@ def construct_mapping(self, node: Any, deep: bool = False): @final class OrgGenerator: # list of managed orgs, should match ./ORGS.md - _MANAGED_ORGS = ["cloudfoundry"] + _MANAGED_ORGS = ["cloudfoundry", "cloudfoundry-tutorials"] _DEFAULT_ORG = "cloudfoundry" # parameters intended for testing only, all params are yaml docs diff --git a/orgs/org_management/test_org_management.py b/orgs/org_management/test_org_management.py index 173d73d31..e2f03d887 100644 --- a/orgs/org_management/test_org_management.py +++ b/orgs/org_management/test_org_management.py @@ -779,11 +779,11 @@ def test_generate_branch_protection_multiple_orgs(self): # integration test, depends on data in this repo which may change class TestOrgGeneratorIntegrationTest(unittest.TestCase): def test_cf_org(self): - self.assertEqual(["cloudfoundry"], OrgGenerator._MANAGED_ORGS) + OrgGenerator._MANAGED_ORGS = ["cloudfoundry", "cloudfoundry-tutorials"] o = OrgGenerator() o.load_from_project() - self.assertEqual(1, len(o.org_cfg["orgs"])) + self.assertEqual(2, len(o.org_cfg["orgs"])) self.assertEqual("cloudfoundry", o.toc_org) self.assertEqual("Technical Oversight Committee", o.toc["name"]) self.assertGreater(len(o.contributors["cloudfoundry"]), 100) diff --git a/orgs/orgs.yml b/orgs/orgs.yml index d4b1ee06b..51f41d5a2 100644 --- a/orgs/orgs.yml +++ b/orgs/orgs.yml @@ -2739,3 +2739,84 @@ orgs: privacy: closed repos: terraform-provider-cloudfoundry: admin + cloudfoundry-tutorials: + admins: [] # shall be empty, maintained in TOC.md + billing_email: ap@cloudfoundry.org + company: "" + default_repository_permission: none + description: Cloud Foundry Foundation Tutorials active projects + email: cf-dev@lists.cloudfoundry.org + has_organization_projects: true + has_repository_projects: true + location: Worldwide + members: [] # shall be empty, org members are maintained in contributors.yml and WG charters + members_can_create_repositories: false + name: Cloud Foundry Tutorials + repos: + cf4devs: + description: Cloud Foundry for Developers. In depth, hands on training + has_projects: false + has_wiki: false + korifi-ci: + description: An introduction to the Korifi project + has_projects: false + has_wiki: false + korifi-sample-app: + description: A sample application used in the Korifi tutorial + has_projects: false + has_wiki: false + tutorials: + description: This repository contains the landing page for https://tutorials.cloudfoundry.org and automations + has_projects: false + has_wiki: false + what-is-cf: + description: Tutorial explaining what is Cloud Foundry, the foundation, etc + has_projects: false + has_wiki: false + sample-app: + description: A sample application written in Go used for training purposes + has_projects: false + has_wiki: false + edx: + description: Cloud Foundry educational content in edX + has_projects: false + has_wiki: false + trycf: + description: "" + archived: true + has_projects: false + has_wiki: false + cf4k8s-do: + description: Installing cf-for-k8s on Digital Ocean + archived: true + has_projects: false + has_wiki: false + unhappy-appy: + description: An app that doesn't always start well. For demo and training ONLY + has_projects: false + has_wiki: false + cf4k8s-gke: + description: Learn to deploy cf-for-k8s on Google Kubernetes Engine + archived: true + has_projects: false + has_wiki: false + harness: + description: Simple script to make live-editing easier + archived: true + has_projects: false + has_wiki: false + fake-mysql-broker: + description: A service broker that looks like it provisions MySQL but doesn't actually do anything. Used for training + has_projects: false + has_wiki: false + hugo-whisper-theme: + description: Whisper is a minimal documentation theme for Hugo + archived: true + has_projects: false + has_wiki: false + cf-and-k8s: + description: "" + archived: true + has_projects: false + has_wiki: false + teams: {} diff --git a/toc/working-groups/docs.md b/toc/working-groups/docs.md index f945bba52..dacefabb8 100644 --- a/toc/working-groups/docs.md +++ b/toc/working-groups/docs.md @@ -60,4 +60,27 @@ areas: - cloudfoundry/docs-credhub - cloudfoundry/docs-deploying-cf - cloudfoundry/docs-dotnet-core-tutorial +- name: Cloud Foundry Tutorials + approvers: + - name: Steve Greenberg + github: spgreenberg + reviewers: + - name: Benjamin Guttmann + github: benjaminguttmann-avtq + - name: Maurice Brinkmann + github: mauricebrinkmann + - name: Andreas Koppenhöfer + github: akop + - name: Jovan Kostovski + github: chombium + repositories: + - cloudfoundry-tutorials/cf4devs + - cloudfoundry-tutorials/korifi-ci + - cloudfoundry-tutorials/korifi-sample-app + - cloudfoundry-tutorials/tutorials + - cloudfoundry-tutorials/what-is-cf + - cloudfoundry-tutorials/sample-app + - cloudfoundry-tutorials/edx + - cloudfoundry-tutorials/unhappy-appy + - cloudfoundry-tutorials/fake-mysql-broker ``` From ded40011d41848aff82e89eba5187ee2c4a55801 Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Tue, 11 Nov 2025 11:51:56 +0100 Subject: [PATCH 2/5] Add Anita Flegg as approver --- toc/working-groups/docs.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/toc/working-groups/docs.md b/toc/working-groups/docs.md index dacefabb8..17e2e4260 100644 --- a/toc/working-groups/docs.md +++ b/toc/working-groups/docs.md @@ -64,6 +64,8 @@ areas: approvers: - name: Steve Greenberg github: spgreenberg + - name: Anita Flegg + github: anita-flegg reviewers: - name: Benjamin Guttmann github: benjaminguttmann-avtq From e61b4b4d430460af93bb21cb28d5436c537cccc8 Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Tue, 11 Nov 2025 13:56:03 +0100 Subject: [PATCH 3/5] Add Arsalan Khan as reviewer --- toc/working-groups/docs.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/toc/working-groups/docs.md b/toc/working-groups/docs.md index 17e2e4260..b0b37f2f5 100644 --- a/toc/working-groups/docs.md +++ b/toc/working-groups/docs.md @@ -75,6 +75,8 @@ areas: github: akop - name: Jovan Kostovski github: chombium + - name: Arsalan Khan + github: asalan316 repositories: - cloudfoundry-tutorials/cf4devs - cloudfoundry-tutorials/korifi-ci From b2ffda856fc79afa886c1ec6df9541535fbe117b Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Thu, 20 Nov 2025 08:32:21 +0100 Subject: [PATCH 4/5] Fix repository of Korifi --- orgs/orgs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/orgs/orgs.yml b/orgs/orgs.yml index 51f41d5a2..5373f156f 100644 --- a/orgs/orgs.yml +++ b/orgs/orgs.yml @@ -2757,7 +2757,7 @@ orgs: description: Cloud Foundry for Developers. In depth, hands on training has_projects: false has_wiki: false - korifi-ci: + korifi: description: An introduction to the Korifi project has_projects: false has_wiki: false From 2b169cd9e1f88d811ba4afff3240b9f99bcb46a7 Mon Sep 17 00:00:00 2001 From: Beyhan Veli Date: Thu, 20 Nov 2025 08:35:07 +0100 Subject: [PATCH 5/5] Change tutorials repository org to cloudfoundry --- orgs/org_management/org_management.py | 2 +- orgs/org_management/test_org_management.py | 4 +- orgs/orgs.yml | 143 +++++++++------------ toc/working-groups/docs.md | 17 ++- 4 files changed, 73 insertions(+), 93 deletions(-) diff --git a/orgs/org_management/org_management.py b/orgs/org_management/org_management.py index 438b7428c..cb9e36bcc 100644 --- a/orgs/org_management/org_management.py +++ b/orgs/org_management/org_management.py @@ -35,7 +35,7 @@ def construct_mapping(self, node: Any, deep: bool = False): @final class OrgGenerator: # list of managed orgs, should match ./ORGS.md - _MANAGED_ORGS = ["cloudfoundry", "cloudfoundry-tutorials"] + _MANAGED_ORGS = ["cloudfoundry"] _DEFAULT_ORG = "cloudfoundry" # parameters intended for testing only, all params are yaml docs diff --git a/orgs/org_management/test_org_management.py b/orgs/org_management/test_org_management.py index e2f03d887..173d73d31 100644 --- a/orgs/org_management/test_org_management.py +++ b/orgs/org_management/test_org_management.py @@ -779,11 +779,11 @@ def test_generate_branch_protection_multiple_orgs(self): # integration test, depends on data in this repo which may change class TestOrgGeneratorIntegrationTest(unittest.TestCase): def test_cf_org(self): - OrgGenerator._MANAGED_ORGS = ["cloudfoundry", "cloudfoundry-tutorials"] + self.assertEqual(["cloudfoundry"], OrgGenerator._MANAGED_ORGS) o = OrgGenerator() o.load_from_project() - self.assertEqual(2, len(o.org_cfg["orgs"])) + self.assertEqual(1, len(o.org_cfg["orgs"])) self.assertEqual("cloudfoundry", o.toc_org) self.assertEqual("Technical Oversight Committee", o.toc["name"]) self.assertGreater(len(o.contributors["cloudfoundry"]), 100) diff --git a/orgs/orgs.yml b/orgs/orgs.yml index 5373f156f..c5a9414b2 100644 --- a/orgs/orgs.yml +++ b/orgs/orgs.yml @@ -862,6 +862,25 @@ orgs: default_branch: main description: Cloud Foundry stack based on Ubuntu 24.04 LTS has_projects: true + cf4k8s-do: + description: Installing cf-for-k8s on Digital Ocean + archived: true + has_projects: false + has_wiki: false + cf4devs: + description: Cloud Foundry for Developers. In depth, hands on training + has_projects: false + has_wiki: false + cf4k8s-gke: + description: Learn to deploy cf-for-k8s on Google Kubernetes Engine + archived: true + has_projects: false + has_wiki: false + cf-and-k8s: + description: "" + archived: true + has_projects: false + has_wiki: false cli: allow_merge_commit: false description: The official command line client for Cloud Foundry @@ -1246,6 +1265,10 @@ orgs: has_projects: false has_wiki: false archived: true + edx: + description: Cloud Foundry educational content in edX + has_projects: false + has_wiki: false eirini-ci: description: CI for Eirini has_projects: false @@ -1295,6 +1318,10 @@ orgs: has_projects: true existingvolumebroker: has_projects: true + fake-mysql-broker: + description: A service broker that looks like it provisions MySQL but doesn't actually do anything. Used for training + has_projects: false + has_wiki: false firehose_exporter: description: Cloud Foundry Firehose Prometheus exporter default_branch: master @@ -1502,6 +1529,11 @@ orgs: haproxy-boshrelease: description: A BOSH release for haproxy (based on cf-release's haproxy job) has_projects: true + harness: + description: Simple script to make live-editing easier + archived: true + has_projects: false + has_wiki: false healthcheck: archived: true description: Common healthcheck for buildpacks and docker @@ -1517,6 +1549,11 @@ orgs: has_wiki: false honeycomb-ginkgo-reporter: has_projects: true + hugo-whisper-theme: + description: Whisper is a minimal documentation theme for Hugo + archived: true + has_projects: false + has_wiki: false hwc: has_projects: true has_wiki: false @@ -1661,6 +1698,10 @@ orgs: korifi-website: default_branch: main has_projects: false + korifi-sample-app: + description: A sample application used in the Korifi tutorial + has_projects: false + has_wiki: false lager: description: An opinionated logger for Go. has_projects: true @@ -2203,6 +2244,10 @@ orgs: sapi-env-pool: has_projects: true private: true + sample-app: + description: A sample application written in Go used for training purposes + has_projects: false + has_wiki: false secure-credentials-broker: has_projects: true security-notices: @@ -2456,6 +2501,15 @@ orgs: training-cert-admin: has_projects: true private: true + trycf: + description: "" + archived: true + has_projects: false + has_wiki: false + tutorials: + description: This repository contains the landing page for https://tutorials.cloudfoundry.org and automations + has_projects: false + has_wiki: false tycho-env: archived: true has_projects: true @@ -2516,6 +2570,10 @@ orgs: urljoiner: archived: true has_projects: true + unhappy-appy: + description: An app that doesn't always start well. For demo and training ONLY + has_projects: false + has_wiki: false usn-resource: has_projects: true vantablackbox-release: @@ -2538,6 +2596,10 @@ orgs: has_projects: true volumedriver: has_projects: true + what-is-cf: + description: Tutorial explaining what is Cloud Foundry, the foundation, etc + has_projects: false + has_wiki: false wg-app-platform-runtime-ci: has_projects: true winc: @@ -2739,84 +2801,3 @@ orgs: privacy: closed repos: terraform-provider-cloudfoundry: admin - cloudfoundry-tutorials: - admins: [] # shall be empty, maintained in TOC.md - billing_email: ap@cloudfoundry.org - company: "" - default_repository_permission: none - description: Cloud Foundry Foundation Tutorials active projects - email: cf-dev@lists.cloudfoundry.org - has_organization_projects: true - has_repository_projects: true - location: Worldwide - members: [] # shall be empty, org members are maintained in contributors.yml and WG charters - members_can_create_repositories: false - name: Cloud Foundry Tutorials - repos: - cf4devs: - description: Cloud Foundry for Developers. In depth, hands on training - has_projects: false - has_wiki: false - korifi: - description: An introduction to the Korifi project - has_projects: false - has_wiki: false - korifi-sample-app: - description: A sample application used in the Korifi tutorial - has_projects: false - has_wiki: false - tutorials: - description: This repository contains the landing page for https://tutorials.cloudfoundry.org and automations - has_projects: false - has_wiki: false - what-is-cf: - description: Tutorial explaining what is Cloud Foundry, the foundation, etc - has_projects: false - has_wiki: false - sample-app: - description: A sample application written in Go used for training purposes - has_projects: false - has_wiki: false - edx: - description: Cloud Foundry educational content in edX - has_projects: false - has_wiki: false - trycf: - description: "" - archived: true - has_projects: false - has_wiki: false - cf4k8s-do: - description: Installing cf-for-k8s on Digital Ocean - archived: true - has_projects: false - has_wiki: false - unhappy-appy: - description: An app that doesn't always start well. For demo and training ONLY - has_projects: false - has_wiki: false - cf4k8s-gke: - description: Learn to deploy cf-for-k8s on Google Kubernetes Engine - archived: true - has_projects: false - has_wiki: false - harness: - description: Simple script to make live-editing easier - archived: true - has_projects: false - has_wiki: false - fake-mysql-broker: - description: A service broker that looks like it provisions MySQL but doesn't actually do anything. Used for training - has_projects: false - has_wiki: false - hugo-whisper-theme: - description: Whisper is a minimal documentation theme for Hugo - archived: true - has_projects: false - has_wiki: false - cf-and-k8s: - description: "" - archived: true - has_projects: false - has_wiki: false - teams: {} diff --git a/toc/working-groups/docs.md b/toc/working-groups/docs.md index b0b37f2f5..512dc1597 100644 --- a/toc/working-groups/docs.md +++ b/toc/working-groups/docs.md @@ -78,13 +78,12 @@ areas: - name: Arsalan Khan github: asalan316 repositories: - - cloudfoundry-tutorials/cf4devs - - cloudfoundry-tutorials/korifi-ci - - cloudfoundry-tutorials/korifi-sample-app - - cloudfoundry-tutorials/tutorials - - cloudfoundry-tutorials/what-is-cf - - cloudfoundry-tutorials/sample-app - - cloudfoundry-tutorials/edx - - cloudfoundry-tutorials/unhappy-appy - - cloudfoundry-tutorials/fake-mysql-broker + - cloudfoundry/cf4devs + - cloudfoundry/korifi-sample-app + - cloudfoundry/tutorials + - cloudfoundry/what-is-cf + - cloudfoundry/sample-app + - cloudfoundry/edx + - cloudfoundry/unhappy-appy + - cloudfoundry/fake-mysql-broker ```