Skip to content

docs: introduce PipeCD community contributor ladder and automated generation (#6548) - #7383

Draft
Ankitdotraider wants to merge 6 commits into
pipe-cd:masterfrom
Ankitdotraider:feat/contributor-ladder
Draft

Ankitdotraider wants to merge 6 commits into
pipe-cd:masterfrom
Ankitdotraider:feat/contributor-ladder

Conversation

@Ankitdotraider

@Ankitdotraider Ankitdotraider commented Sep 15, 2026

Copy link
Copy Markdown

What this PR does
Fixes #6548
Adds a contributor ladder so we can recognize people who've had PRs merged into PipeCD, something that's come up a few times in the newcomers meeting and got discussed on the linked issue.
The generator script (scripts/generate_contributors.py) hits the GitHub API for merged PRs and buckets contributors into three tiers by count: Newcomer at 1, Contributor at 2-4, Core Contributor at 5+ (also the point where someone's eligible to ask about org membership). Bots get filtered out. It writes CONTRIBUTORS.md and updates the docs page.
There's a workflow that reruns this daily and on manual trigger, only committing if something actually changed. Docs page explains how the tiers work.
CONTRIBUTORS.md in this PR is just the initial seed from running it once locally.

Tier cutoffs are just a first guess and happy to change it as the reviewer wants me to.

Checklist

  • Commits are signed with DCO (Signed-off-by)
  • Documentation added and previewed
  • Automated workflow and script tested

Add Phase 1 of the PipeCD Contributor Ladder to recognize community
contributions based on merged pull requests:
- Add scripts/generate_contributors.py to query GitHub API, tally merged
  PRs per contributor, sort, and format CONTRIBUTORS.md
- Add .github/workflows/update-contributors.yml for automated daily updates
- Add docs/content/en/docs-dev/contribution-guidelines/contributor-ladder.md
  describing ladder tiers, rules, and progression paths
- Generate initial CONTRIBUTORS.md

Ref: pipe-cd#6548
Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
…orkflow

Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
Copilot AI lite review requested due to automatic review settings September 15, 2026 11:12
@netlify

netlify Bot commented Sep 15, 2026

Copy link
Copy Markdown

Deploy Preview for pipecd-site ready!

Name Link
🔨 Latest commit c89fc5e
🔍 Latest deploy log https://app.netlify.com/projects/pipecd-site/deploys/6aaad468c3158d0008e1090c
😎 Deploy Preview https://deploy-preview-7383--pipecd-site.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved workflow, generator, and RSS issues—including an unpinned privileged action—block approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds an automated PipeCD contributor ladder based on merged pull requests, generated contributor documentation, daily refresh automation, and RSS configuration.

Changes:

  • Adds GitHub API-based contributor generation.
  • Adds ladder documentation and CONTRIBUTORS.md.
  • Adds scheduled workflow automation.
  • Adds RSS and Hugo author configuration.
File summaries
File Summary
scripts/generate_contributors.py Generates contributor tiers and documentation; requires fixes for API pagination, timeouts, repository handling, and configurable tier text.
docs/layouts/_default/list.rss.xml Adds an RSS override, but author metadata lookups do not match the configured Hugo author block.
docs/content/en/docs-dev/contribution-guidelines/contributor-ladder.md Documents contributor tiers, counting rules, and eligibility.
docs/config.toml Adds author and security configuration; the author configuration is not consumed by the RSS template.
CONTRIBUTORS.md Provides the initial generated contributor listing.
.github/workflows/update-contributors.yml Automates refreshes; requires fixes for caching, concurrency, action pinning, publication triggering, and timestamp-driven commits.
Review details

Suppressed comments (8)

.github/workflows/update-contributors.yml:59

  • Even aside from GITHUB_TOKEN event suppression, this commit message contains [skip ci], which prevents push-triggered workflows such as publish_site from running. The generated docs will therefore be committed but the live site will not rebuild; remove the skip marker and use a token whose push can trigger workflows, or explicitly dispatch the publication workflow.
          git commit -m "docs: update contributors ladder and documentation [skip ci]"
          git push

.github/workflows/update-contributors.yml:50

  • Because the generator always embeds the current timestamp in both output files, this git diff is non-empty on every daily run even when no contributor data changed. The scheduled job will therefore create a commit every day, contrary to the apparent change-only behavior and adding avoidable history/noise; remove the volatile timestamp or compare stable generated content before committing.
          if git diff --quiet CONTRIBUTORS.md docs/content/en/docs-dev/contribution-guidelines/contributor-ladder.md; then

docs/config.toml:58

  • The new RSS override reads .Site.Params.author, but the added configuration block is [author], which populates .Site.Author instead. As a result, the configured name and email are never emitted in the feed's editor/webmaster/item-author fields.
[author]
  name = "PipeCD Authors"
  email = "pipecd.dev@gmail.com"

docs/layouts/_default/list.rss.xml:30

  • This RSS author lookup has the same mismatch with the [author] configuration: .Site.Params.author.email is unset, so item-level <author> elements are omitted. Use .Site.Author as in the theme template.
      {{ with .Site.Params.author.email }}<author>{{.}}{{ with $.Site.Params.author.name }} ({{.}}){{end}}</author>{{end}}

scripts/generate_contributors.py:442

  • The generator only queries args.repo (the workflow passes pipe-cd/pipecd), so this requirement is not supported by the data shown in the ladder: PRs in other pipe-cd repositories are neither counted nor listed. Either aggregate all organization repositories or state that the five PRs must be in pipe-cd/pipecd.
            "1. Have at least **5 merged PRs** in repositories under the `pipe-cd` organization.",

scripts/generate_contributors.py:198

  • The Search API request also has no timeout, so --method search can hang indefinitely on a stalled connection. Use the same bounded request timeout as the pulls path.
        resp = session.get(url, headers=headers, params=params)

scripts/generate_contributors.py:379

  • The displayed repository name is hard-coded to pipe-cd/pipecd, even though this function accepts repo and the CLI exposes --repo. Generating the docs for any other repository would produce a misleading description; interpolate the target repository consistently with the link.
        f"The contributor ladder tracks contributions based on **merged pull requests** to the [`pipe-cd/pipecd`](https://github.com/{repo}) repository:",

scripts/generate_contributors.py:385

  • The tier table duplicates the threshold values instead of deriving them from TIERS. Changing the advertised configurable constants at the top will update the generated headings but leave this table—and the membership text below—stale, so generate these ranges and eligibility wording from the configured tier data.
        "| Tier | Merged PRs | Description & Recognition |",
        "| :--- | :---: | :--- |",
        "| 🌱 **Newcomer** | **1** | Welcome to the community! Listed in the Newcomers tier. |",
        "| 🛠️ **Contributor** | **2–4** | Continued active involvement and consistent contributions across any part of the project. |",
        "| 🚀 **Core Contributor** | **5+** | Established and trusted contributors with a strong track record. Eligible to apply for membership in the `pipe-cd` GitHub organization. |",
  • Files reviewed: 6/6 changed files
  • Comments generated: 7
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/update-contributors.yml Outdated
Comment thread .github/workflows/update-contributors.yml
Comment thread .github/workflows/update-contributors.yml Outdated
Comment thread docs/layouts/_default/list.rss.xml
Comment thread scripts/generate_contributors.py Outdated
Comment thread scripts/generate_contributors.py Outdated
Comment thread scripts/generate_contributors.py Outdated
…w security and templates

Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
@Ankitdotraider
Ankitdotraider marked this pull request as ready for review September 15, 2026 17:32
@Ankitdotraider
Ankitdotraider requested review from a team as code owners September 15, 2026 17:32
@Ankitdotraider
Ankitdotraider marked this pull request as draft September 15, 2026 17:33
Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
…atibility

Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: Add a Contributor Ladder defining community roles and progression

2 participants