diff --git a/.github/workflows/update-landscape.yml b/.github/workflows/update-landscape.yml index f6baa5f..8ae48e5 100644 --- a/.github/workflows/update-landscape.yml +++ b/.github/workflows/update-landscape.yml @@ -3,7 +3,11 @@ on: push: branches: [main] paths: + - 'org.yaml' - 'project.yaml' + # Multi-project repositories keep each project in its own directory, + # exactly one level deep. + - '*/project.yaml' workflow_dispatch: jobs: @@ -19,7 +23,8 @@ jobs: fetch-depth: 0 - name: Update Landscape - uses: cncf/automation/.github/actions/landscape-update@53810a548b46f33421cd67e57d16e4b7251416d9 + uses: cncf/automation/.github/actions/landscape-update@85e0bcd298817a6e26e286d6b22615f8c81b4e4b with: - project_file: 'project.yaml' + # No project_file input: the action discovers every project and + # opens one landscape pull request per project. token: ${{ secrets.LANDSCAPE_REPO_TOKEN }} diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index 5f64ee9..07d0ab5 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -3,13 +3,21 @@ name: Validate Project Metadata on: pull_request: paths: + - 'org.yaml' - 'project.yaml' - 'maintainers.yaml' + # Multi-project repositories keep each project in its own directory, + # exactly one level deep. + - '*/project.yaml' + - '*/maintainers.yaml' push: branches: [main] paths: + - 'org.yaml' - 'project.yaml' - 'maintainers.yaml' + - '*/project.yaml' + - '*/maintainers.yaml' workflow_dispatch: jobs: @@ -20,9 +28,9 @@ jobs: with: fetch-depth: 0 - - uses: cncf/automation/.github/actions/validate-project@53810a548b46f33421cd67e57d16e4b7251416d9 - with: - project_file: 'project.yaml' + - uses: cncf/automation/.github/actions/validate-project@85e0bcd298817a6e26e286d6b22615f8c81b4e4b + # No project_file input: the action discovers the repository layout, + # so this step is identical for single- and multi-project repositories. validate-maintainers: runs-on: ubuntu-latest @@ -31,9 +39,10 @@ jobs: with: fetch-depth: 0 - - uses: cncf/automation/.github/actions/validate-maintainers@53810a548b46f33421cd67e57d16e4b7251416d9 + - uses: cncf/automation/.github/actions/validate-maintainers@85e0bcd298817a6e26e286d6b22615f8c81b4e4b with: - maintainers_file: 'maintainers.yaml' + # No maintainers_file input: the action discovers every maintainers + # file in the repository. # Disabled until the LFX LLT issue is resolved. Validation is done manually for now. verify_maintainers: 'false' env: diff --git a/README.md b/README.md index e493112..76966ce 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,35 @@ -# Fluentd `.project` +# Fluent `.project` `.project` (dot-project) is a CNCF initiative to centralize and automate metadata management for all CNCF projects. -This repository holds the canonical metadata for [Fluentd](https://www.fluentd.org/) and is maintained by the CNCF automation tooling. +This repository holds the canonical metadata for the CNCF projects maintained in the `fluent` organization, and is maintained by the CNCF automation tooling. ## What's in this repo | File | Purpose | |------|---------| -| `project.yaml` | Canonical project metadata (name, maturity, repositories, governance links, …) | -| `maintainers.yaml` | Maintainer and reviewer roster used for drift detection and mailing-list sync | +| `org.yaml` | Index of the CNCF projects maintained in this organization | +| `/project.yaml` | Canonical metadata for one project (name, maturity, repositories, governance links, …) | +| `/maintainers.yaml` | Maintainer and reviewer roster for one project | | `CODEOWNERS` | Ensures PRs to this repo require maintainer approval | | `.github/workflows/validate.yaml` | CI — validates `project.yaml` and `maintainers.yaml` on every PR | | `.github/workflows/update-landscape.yml` | Automatically proposes landscape updates when `project.yaml` changes | +## Projects in this repository + +This GitHub organization maintains more than one CNCF project. Each is a +separate project from CNCF's point of view — its own maturity, its own +landscape entry — so each owns a directory with its own metadata, and +`org.yaml` indexes them: + +| Project | Directory | +|---------|-----------| +| Fluentd | [`fluentd/`](./fluentd/) | +| Fluent Bit | [`fluent-bit/`](./fluent-bit) | + +Add or remove a project by editing `org.yaml` and its directory together; +validation fails if the two disagree. See the +[repository layouts reference](https://github.com/cncf/automation/tree/main/utilities/dot-project#repository-layouts). + ## Keeping metadata up to date Open a pull request against this repository to update any metadata field. diff --git a/fluent-bit/maintainers.yaml b/fluent-bit/maintainers.yaml new file mode 100644 index 0000000..3b2b3f8 --- /dev/null +++ b/fluent-bit/maintainers.yaml @@ -0,0 +1,37 @@ +# Maintainer roster for Fluent Bit +# Documentation: https://github.com/cncf/automation/tree/main/utilities/dot-project + + +# Maintainers: Please connect your GitHub handle to your LFID on openprofile.dev to enable automatic access to CNCF resources. The system will use your primary email address for setup. +maintainers: + - project_id: "fluent-bit" + org: "fluent" + teams: + # Source of truth: https://github.com/fluent/fluent-bit/blob/master/MAINTAINERS.md + # TODO: Fluent Bit maintainers — please verify this roster + - name: "fluent-bit-maintainers" + members: + - edsiper + - leonardo-albertovich + - koleini + - cosmo0920 + - fujimotos + - PettitWesley + - clamoriniere + - sxd + - niedbalski + - patrick-stephens + # Unmanaged teams: teams with "managed: false" are tracked in this + # file for documentation but are excluded from CNCF resource + # provisioning (mailing lists, service desk, Copilot seats, etc). + # + # Active contributors who do not need full CNCF resource access: + # - name: "reviewers" + # managed: false + # members: + # - reviewer-handle + # + # Former maintainers (remove this section if not applicable): + # - name: "emeritus" + # managed: false + # members: [] \ No newline at end of file diff --git a/fluent-bit/project.yaml b/fluent-bit/project.yaml new file mode 100644 index 0000000..8db127c --- /dev/null +++ b/fluent-bit/project.yaml @@ -0,0 +1,64 @@ +# .project metadata for Fluent Bit +# Documentation: https://github.com/cncf/automation/tree/main/utilities/dot-project + +# TODO: Set the TOC issue for the maturity_log entry +# TODO: Verify the repository list and package_managers + +schema_version: "1.0.0" +slug: "fluent-bit" +name: "Fluent Bit" +description: "Fast and Lightweight Logs, Metrics and Traces processor for Linux, BSD, OSX and Windows" +type: "project" +project_lead: "edsiper" +slack_channels: + - name: "#fluent-bit" + primary: true + +maturity_log: + # Fluent Bit graduated with Fluentd, as a sub-project under its umbrella + # (see https://github.com/fluent/fluent-bit/blob/master/GOVERNANCE.md). + - phase: "graduated" + date: "2019-04-11T00:00:00Z" + issue: "https://github.com/cncf/toc/issues/XXX" # TODO: Set TOC issue URL + +repositories: + - url: "https://github.com/fluent/fluent-bit" + primary: true + - url: "https://github.com/fluent/fluent-bit-docs" + +website: "https://fluentbit.io" + +artwork: "https://raw.githubusercontent.com/cncf/artwork/main/projects/fluentd/fluentbit/icon/fluentbit-icon-color.svg" + +adopters: + path: "https://github.com/fluent/fluent-bit/#-production-usage" + +# Images are built once for ghcr.io and promoted to the other registries. +package_managers: + docker: "fluent/fluent-bit" + ghcr: "ghcr.io/fluent/fluent-bit" + +security: + policy: + path: "https://github.com/fluent/fluent-bit/blob/master/SECURITY.md" + contact: + advisory_url: "https://github.com/fluent/fluent-bit/security/advisories/new" + +governance: + contributing: + path: "https://github.com/fluent/fluent-bit/blob/master/CONTRIBUTING.md" + code_of_conduct: + path: "https://github.com/fluent/fluent-bit/blob/master/CODE_OF_CONDUCT.md" + +legal: + license: + path: "https://github.com/fluent/fluent-bit/blob/master/LICENSE" + identity_type: + has_dco: true # AUTO-DETECTED — please verify + has_cla: false # AUTO-DETECTED — please verify + dco_url: + path: "https://developercertificate.org/" + +documentation: + readme: + path: "https://github.com/fluent/fluent-bit/blob/master/README.md" diff --git a/maintainers.yaml b/fluentd/maintainers.yaml similarity index 100% rename from maintainers.yaml rename to fluentd/maintainers.yaml diff --git a/project.yaml b/fluentd/project.yaml similarity index 89% rename from project.yaml rename to fluentd/project.yaml index 416ba73..558501f 100644 --- a/project.yaml +++ b/fluentd/project.yaml @@ -1,8 +1,6 @@ # .project metadata for Fluentd # Documentation: https://github.com/cncf/automation/tree/main/utilities/dot-project -# TODO: Add package_managers if distributed via registries - schema_version: "1.0.0" slug: "fluentd" name: "Fluentd" @@ -10,7 +8,7 @@ description: "Fluentd is an open source data collector for unified logging layer type: "project" project_lead: "sonots" # TODO: AUTO-DETECTED — please verify slack_channels: # TODO: AUTO-DETECTED — please verify the channel(s) below - - name: "#fluent-bit" + - name: "#fluentd" primary: true maturity_log: @@ -31,9 +29,9 @@ adopters: path: "https://github.com/fluent/fluentd/blob/master/ADOPTERS.md" -# TODO: Add package manager identifiers if your project is distributed via registries -# package_managers: -# docker: "fluent/fluentd" +package_managers: + docker: "fluent/fluentd" + ghcr: "ghcr.io/fluent/fluentd" social: twitter: "https://twitter.com/fluentd" diff --git a/org.yaml b/org.yaml new file mode 100644 index 0000000..69f5d5f --- /dev/null +++ b/org.yaml @@ -0,0 +1,14 @@ +# Index of the CNCF projects maintained in this GitHub organization. +# Documentation: https://github.com/cncf/automation/tree/main/utilities/dot-project +# +# Each project owns a directory containing its own project.yaml and +# maintainers.yaml. Remove an entry here only when CNCF archives the project. + +schema_version: "1.0.0" +org: "fluent" + +projects: + # Fluentd (graduated) + - id: "fluentd" + # Fluent Bit (graduated) + - id: "fluent-bit" \ No newline at end of file