{"id":42194609,"url":"https://github.com/scientific-python/attach-next-milestone-action","last_synced_at":"2026-01-27T00:01:51.886Z","repository":{"id":170147140,"uuid":"646225442","full_name":"scientific-python/attach-next-milestone-action","owner":"scientific-python","description":"Attach the next open milestone to a merged PR","archived":false,"fork":false,"pushed_at":"2025-02-07T05:52:09.000Z","size":22,"stargazers_count":2,"open_issues_count":4,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-01-21T08:54:29.247Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scientific-python.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-27T17:31:40.000Z","updated_at":"2025-02-07T05:52:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"f58b7333-65b6-4b0f-b924-d37ba40d5691","html_url":"https://github.com/scientific-python/attach-next-milestone-action","commit_stats":{"total_commits":19,"total_committers":4,"mean_commits":4.75,"dds":0.1578947368421053,"last_synced_commit":"bc07be829f693829263e57d5e8489f4e57d3d420"},"previous_names":["stefanv/attach-next-milestone","scientific-python/attach-next-milestone","scientific-python/attach-next-milestone-action"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/scientific-python/attach-next-milestone-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fattach-next-milestone-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fattach-next-milestone-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fattach-next-milestone-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fattach-next-milestone-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scientific-python","download_url":"https://codeload.github.com/scientific-python/attach-next-milestone-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scientific-python%2Fattach-next-milestone-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28792638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:49:50.245Z","status":"ssl_error","status_checked_at":"2026-01-26T21:48:29.455Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-27T00:01:50.837Z","updated_at":"2026-01-27T00:01:51.873Z","avatar_url":"https://github.com/scientific-python.png","language":"Python","readme":"# Attach Next Milestone Action\n\nThis action attaches the next open milestone to merged PRs.\n\nCurrently, this action only looks at milestones that can be parsed as\nversion numbers.\n\nA typical job would look like this:\n\n```yaml\n# .github/workflows/milestone-merged-prs.yaml\n\nname: Milestone\n\non:\n  pull_request_target:\n    types:\n      - closed\n    branches:\n      - 'main'\n\njobs:\n  milestone_pr:\n    name: attach to PR\n    if: github.event.pull_request.merged == true\n    runs-on: ubuntu-latest\n    steps:\n      - uses: scientific-python/attach-next-milestone-action@a4889cfde7d2578c1bc7400480d93910d2dd34f6\n        with:\n          token: ${{ secrets.MILESTONE_LABELER_TOKEN }}\n```\n\nTo use the above, you will need to set a repository secret\n`MILESTONE_LABELER_TOKEN` to a [fine-grained access token](https://github.blog/2022-10-18-introducing-fine-grained-personal-access-tokens-for-github/)\nthat has *read \u0026 write* permissions to modify *both* issues and PRs.\nIf you are generating a token for your org, you first need to enable fine-grained access tokens at\n`https://github.com/organizations/\u003cYOUR-ORGANIZATION\u003e/settings/personal-access-tokens-onboarding`.\n\nYou can generate the token itself at https://github.com/settings/apps.\n\n1. Personal access tokens -\u003e Fine-grained tokens. Generate new token. Token name: milestone-labeler-token.\n2. Select the org which owns the code repository.\n   If you don't see your organization listed, you first need to\n   [onboard it](https://github.com/organizations/\u003cYOUR_ORG_NAME\u003e/settings/personal-access-tokens-onboarding).\n3. Choose \"Only Select Repositories\", and choose the correct one.\n4. Permissions:\n   - Repository Permissions -\u003e Pull Requests -\u003e Read and write.\n   - Repository Permissions -\u003e Issues -\u003e Read and write.\n6. Generate the token. If an error appears saying \"Sorry, something went wrong\", ignore it.\n\nCopy the token, and navigate to your code repository. Under Settings\n-\u003e Secrets and variables -\u003e Actions, add a repository secret named\n`MILESTONE_LABELER_TOKEN`, and set its contents to the generated\ntoken.\n\n## Options\n\nIn the `with` clause, the following options are available:\n\n- `force: true` : Overwrite existing milestones.\n\n## Warning!\n\nThe workflow above runs as `pull_request_target`, meaning it has access to repository secrets.\nThis is not usually a problem, since our action does nothing but attach a milestone to a PR using the provided token.\nBut, you should **not add further commands to the workflow**, such as checking out the PR and executing code from it.\nIf you do that, PR authors can gain access to your secrets.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscientific-python%2Fattach-next-milestone-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscientific-python%2Fattach-next-milestone-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscientific-python%2Fattach-next-milestone-action/lists"}