Skip to content

feat: add GitHub milestone manager script#8

Open
BigLep wants to merge 6 commits intomasterfrom
biglep/github-milestone-management
Open

feat: add GitHub milestone manager script#8
BigLep wants to merge 6 commits intomasterfrom
biglep/github-milestone-management

Conversation

@BigLep
Copy link
Contributor

@BigLep BigLep commented Jan 23, 2026

This PR adds a new script for managing GitHub milestones across multiple repositories.

Features

  • Create/update milestones across multiple repositories from JSON configuration
  • Support for reference milestones to sync milestones across repos
  • Automatic milestone matching by name when using referenceMilestoneUrl
  • JSON schema validation with support for comments (// and /* */)
  • Dry-run mode for safe testing
  • Support for milestone renaming via existingNameToRename
  • Handle description and due date with null/empty string clearing

Files Added

  • github-milestone-creator/github_milestone_creator.py - Main script
  • github-milestone-creator/milestones-schema.json - JSON schema for validation
  • Example configuration files

Dependencies

  • Added jsonschema>=4.0.0 to requirements.txt

- Add github_milestone_creator.py script to create/update milestones across repos
- Support reference milestones for syncing across repositories
- Support automatic milestone matching by name when using referenceMilestoneUrl
- Add JSON schema validation with comment support (// and /* */)
- Add dry-run mode for safe testing
- Support milestone renaming via existingNameToRename
- Handle description and due date with null/empty string clearing
- Add milestones-schema.json for validation
- Add example configuration files
- Update requirements.txt to include jsonschema dependency
@BigLep BigLep self-assigned this Jan 23, 2026
- Check for milestone with existingNameToRename name before creating
- Check for milestone with reference milestone name before creating
- Only create new milestone if neither exists
- Ensures we don't create duplicate milestones
- Display name, description, and due date changes in CLI output
- Show previous → new values for updates
- Show (not set) → new values for creates
- Indicate (unchanged) when values remain the same
- Format dates as YYYY-MM-DD for readability
- Works in both dry-run and execution modes
- Add comprehensive README in github-milestone-creator/ directory
- Document usage with uv run
- Include configuration examples and troubleshooting
- Update main README to reference milestone creator tool
- Add PEP 723 inline script metadata for uv run support
- Update milestone configuration files
@BigLep
Copy link
Contributor Author

BigLep commented Jan 25, 2026

I was able to use this to create/update all the milestones. Below is the summary:

uv run github_milestone_creator.py --token $(gh auth token) --config milestones-FOCRepos-2026-01-23.json

...

================================================================================
EXECUTION SUMMARY
================================================================================

FilOzone/SessionKeyRegistry:
  Updated (5):
    - M4.0: mainnet staged: https://github.com/FilOzone/SessionKeyRegistry/milestone/5
    - M4.1: mainnet ready: https://github.com/FilOzone/SessionKeyRegistry/milestone/2
    - M4.2: mainnet GA: https://github.com/FilOzone/SessionKeyRegistry/milestone/6
    - M4.5: GA Fast Follows: https://github.com/FilOzone/SessionKeyRegistry/milestone/4
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/SessionKeyRegistry/milestone/3

FilOzone/dealbot:
  Updated (5):
    - M4.0: mainnet staged: https://github.com/FilOzone/dealbot/milestone/6
    - M4.1: mainnet ready: https://github.com/FilOzone/dealbot/milestone/3
    - M4.2: mainnet GA: https://github.com/FilOzone/dealbot/milestone/7
    - M4.5: GA Fast Follows: https://github.com/FilOzone/dealbot/milestone/5
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/dealbot/milestone/4

FilOzone/filecoin-cloud:
  Updated (5):
    - M4.0: mainnet staged: https://github.com/FilOzone/filecoin-cloud/milestone/3
    - M4.1: mainnet ready: https://github.com/FilOzone/filecoin-cloud/milestone/2
    - M4.2: mainnet GA: https://github.com/FilOzone/filecoin-cloud/milestone/4
    - M4.5: GA Fast Follows: https://github.com/FilOzone/filecoin-cloud/milestone/1
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/filecoin-cloud/milestone/5

FilOzone/filecoin-pay:
  Updated (5):
    - M4.0: mainnet staged: https://github.com/FilOzone/filecoin-pay/milestone/11
    - M4.1: mainnet ready: https://github.com/FilOzone/filecoin-pay/milestone/8
    - M4.2: mainnet GA: https://github.com/FilOzone/filecoin-pay/milestone/12
    - M4.5: GA Fast Follows: https://github.com/FilOzone/filecoin-pay/milestone/10
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/filecoin-pay/milestone/2

FilOzone/filecoin-pay-auction-bot:
  Created (3):
    - M4.0: mainnet staged: https://github.com/FilOzone/filecoin-pay-auction-bot/milestone/3
    - M4.2: mainnet GA: https://github.com/FilOzone/filecoin-pay-auction-bot/milestone/4
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/filecoin-pay-auction-bot/milestone/5
  Updated (2):
    - M4.1: mainnet ready: https://github.com/FilOzone/filecoin-pay-auction-bot/milestone/1
    - M4.5: GA Fast Follows: https://github.com/FilOzone/filecoin-pay-auction-bot/milestone/2

FilOzone/filecoin-pay-explorer:
  Created (2):
    - M4.0: mainnet staged: https://github.com/FilOzone/filecoin-pay-explorer/milestone/6
    - M4.2: mainnet GA: https://github.com/FilOzone/filecoin-pay-explorer/milestone/7
  Updated (3):
    - M4.1: mainnet ready: https://github.com/FilOzone/filecoin-pay-explorer/milestone/3
    - M4.5: GA Fast Follows: https://github.com/FilOzone/filecoin-pay-explorer/milestone/5
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/filecoin-pay-explorer/milestone/4

FilOzone/foc-devnet:
  Created (2):
    - M4.0: mainnet staged: https://github.com/FilOzone/foc-devnet/milestone/4
    - M4.2: mainnet GA: https://github.com/FilOzone/foc-devnet/milestone/5
  Updated (3):
    - M4.1: mainnet ready: https://github.com/FilOzone/foc-devnet/milestone/2
    - M4.5: GA Fast Follows: https://github.com/FilOzone/foc-devnet/milestone/1
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/foc-devnet/milestone/3

FilOzone/fs-pm:
  Created (3):
    - M4.0: mainnet staged: https://github.com/FilOzone/fs-pm/milestone/8
    - M4.2: mainnet GA: https://github.com/FilOzone/fs-pm/milestone/9
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/fs-pm/milestone/10
  Updated (2):
    - M4.1: mainnet ready: https://github.com/FilOzone/fs-pm/milestone/3
    - M4.5: GA Fast Follows: https://github.com/FilOzone/fs-pm/milestone/7

FilOzone/infra:
  Created (4):
    - M4.0: mainnet staged: https://github.com/FilOzone/infra/milestone/2
    - M4.2: mainnet GA: https://github.com/FilOzone/infra/milestone/3
    - M4.5: GA Fast Follows: https://github.com/FilOzone/infra/milestone/4
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/infra/milestone/5
  Updated (1):
    - M4.1: mainnet ready: https://github.com/FilOzone/infra/milestone/1

FilOzone/pdp:
  Created (2):
    - M4.0: mainnet staged: https://github.com/FilOzone/pdp/milestone/8
    - M4.2: mainnet GA: https://github.com/FilOzone/pdp/milestone/9
  Updated (3):
    - M4.1: mainnet ready: https://github.com/FilOzone/pdp/milestone/6
    - M4.5: GA Fast Follows: https://github.com/FilOzone/pdp/milestone/7
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/pdp/milestone/1

FilOzone/pdp-explorer:
  Created (2):
    - M4.0: mainnet staged: https://github.com/FilOzone/pdp-explorer/milestone/8
    - M4.2: mainnet GA: https://github.com/FilOzone/pdp-explorer/milestone/9
  Updated (3):
    - M4.1: mainnet ready: https://github.com/FilOzone/pdp-explorer/milestone/6
    - M4.5: GA Fast Follows: https://github.com/FilOzone/pdp-explorer/milestone/7
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/pdp-explorer/milestone/1

FilOzone/synapse-sdk:
  Created (2):
    - M4.0: mainnet staged: https://github.com/FilOzone/synapse-sdk/milestone/11
    - M4.2: mainnet GA: https://github.com/FilOzone/synapse-sdk/milestone/12
  Updated (3):
    - M4.1: mainnet ready: https://github.com/FilOzone/synapse-sdk/milestone/7
    - M4.5: GA Fast Follows: https://github.com/FilOzone/synapse-sdk/milestone/10
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/synapse-sdk/milestone/2

FilOzone/tpm-utils:
  Created (4):
    - M4.0: mainnet staged: https://github.com/FilOzone/tpm-utils/milestone/2
    - M4.2: mainnet GA: https://github.com/FilOzone/tpm-utils/milestone/3
    - M4.5: GA Fast Follows: https://github.com/FilOzone/tpm-utils/milestone/4
    - MX: Priority and sequencing TBD: https://github.com/FilOzone/tpm-utils/milestone/5
  Updated (1):
    - M4.1: mainnet ready: https://github.com/FilOzone/tpm-utils/milestone/1

filecoin-project/curio:
  Created (2):
    - M4.0: mainnet staged: https://github.com/filecoin-project/curio/milestone/8
    - M4.2: mainnet GA: https://github.com/filecoin-project/curio/milestone/9
  Updated (3):
    - M4.1: mainnet ready: https://github.com/filecoin-project/curio/milestone/5
    - M4.5: GA Fast Follows: https://github.com/filecoin-project/curio/milestone/7
    - MX: Priority and sequencing TBD: https://github.com/filecoin-project/curio/milestone/6

filecoin-project/filecoin-pin:
  Created (2):
    - M4.0: mainnet staged: https://github.com/filecoin-project/filecoin-pin/milestone/7
    - M4.2: mainnet GA: https://github.com/filecoin-project/filecoin-pin/milestone/8
  Updated (3):
    - M4.1: mainnet ready: https://github.com/filecoin-project/filecoin-pin/milestone/4
    - M4.5: GA Fast Follows: https://github.com/filecoin-project/filecoin-pin/milestone/6
    - MX: Priority and sequencing TBD: https://github.com/filecoin-project/filecoin-pin/milestone/5

filecoin-project/filecoin-pin-website:
  Created (2):
    - M4.0: mainnet staged: https://github.com/filecoin-project/filecoin-pin-website/milestone/5
    - M4.2: mainnet GA: https://github.com/filecoin-project/filecoin-pin-website/milestone/6
  Updated (3):
    - M4.1: mainnet ready: https://github.com/filecoin-project/filecoin-pin-website/milestone/3
    - M4.5: GA Fast Follows: https://github.com/filecoin-project/filecoin-pin-website/milestone/4
    - MX: Priority and sequencing TBD: https://github.com/filecoin-project/filecoin-pin-website/milestone/1

filecoin-project/lotus:
  Created (2):
    - M4.0: mainnet staged: https://github.com/filecoin-project/lotus/milestone/83
    - M4.2: mainnet GA: https://github.com/filecoin-project/lotus/milestone/84
  Updated (3):
    - M4.1: mainnet ready: https://github.com/filecoin-project/lotus/milestone/82
    - M4.5: GA Fast Follows: https://github.com/filecoin-project/lotus/milestone/81
    - MX: Priority and sequencing TBD: https://github.com/filecoin-project/lotus/milestone/80

@BigLep BigLep marked this pull request as ready for review January 25, 2026 16:53
@BigLep BigLep requested review from Copilot and rjan90 January 25, 2026 16:53
@BigLep BigLep changed the title [WIP] feat: add GitHub milestone creator script feat: add GitHub milestone manager script Jan 25, 2026
- Rename github_milestone_creator.py to github_milestone_manager.py
- Rename GitHubMilestoneCreator class to GitHubMilestoneManager
- Update all documentation and references
- Update README files to reflect manager naming
- Update usage examples to use new filename
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR introduces a new GitHub Milestone Creator tool that enables bulk creation and synchronization of milestones across multiple GitHub repositories. The tool supports syncing from reference repositories, automatic milestone matching, renaming capabilities, JSON schema validation with comment support, and dry-run mode for safe testing.

Changes:

  • Added a comprehensive Python script for managing GitHub milestones across multiple repositories with support for reference milestones, renaming, and field clearing
  • Included JSON schema validation with support for JSON comments (// and /* */ styles)
  • Provided example configuration files demonstrating both standalone and reference-based milestone management
  • Added complete documentation with usage examples, configuration format details, and troubleshooting guidance

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
requirements.txt Added jsonschema>=4.0.0 dependency for JSON schema validation
github-milestone-creator/github_milestone_creator.py Main script implementing milestone creation/update logic with rate limiting, comment stripping, and dry-run support
github-milestone-creator/milestones-schema.json JSON schema defining configuration file structure with validation rules for repos and milestones
github-milestone-creator/milestones-filecoin-services-as-source-of-truth-2026-01-23.json Example configuration for managing milestones in the source-of-truth repository
github-milestone-creator/milestones-FOCRepos-2026-01-23.json Example configuration syncing milestones from reference repository to multiple FOC repos
github-milestone-creator/README.md Comprehensive documentation covering installation, usage, configuration format, and examples
README.md Updated main README with new tool description and feature overview

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +8 to +10
"FilOzone/filecoin-pay-explorer",
// "FilOzone/filecoin-services" // Intentionally not including because it serves as the source of truth for the FOC GA milestones in GitHub.
"FilOzone/foc-devnet",
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

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

This line will create invalid JSON after comment stripping. After the comment is removed, there will be a trailing comma after "FilOzone/filecoin-pay-explorer" on line 8, followed by another comma on line 10 (or the closing bracket), which violates JSON syntax. This line should either be moved to the end of the array or the entire line should be commented out including the comma, or the previous line's comma should be removed.

Suggested change
"FilOzone/filecoin-pay-explorer",
// "FilOzone/filecoin-services" // Intentionally not including because it serves as the source of truth for the FOC GA milestones in GitHub.
"FilOzone/foc-devnet",
"FilOzone/filecoin-pay-explorer"
// "FilOzone/filecoin-services" // Intentionally not including because it serves as the source of truth for the FOC GA milestones in GitHub.
, "FilOzone/foc-devnet",

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant