Create merge-main-into-prs.yml (#10031)
This commit is contained in:
parent
e2700e7dd5
commit
d608565a17
1 changed files with 54 additions and 0 deletions
54
.github/workflows/merge-main-into-prs.yml
vendored
Normal file
54
.github/workflows/merge-main-into-prs.yml
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
||||||
|
# Automatically merges repository 'main' branch into all open PRs to keep them up-to-date
|
||||||
|
# Action runs on updates to main branch so when one PR merges to main all others update
|
||||||
|
|
||||||
|
name: Merge main into PRs
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
# push:
|
||||||
|
# branches:
|
||||||
|
# - main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Merge:
|
||||||
|
if: github.repository == 'ultralytics/ultralytics'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.11"
|
||||||
|
cache: "pip" # caching pip dependencies
|
||||||
|
- name: Install requirements
|
||||||
|
run: |
|
||||||
|
pip install pygithub
|
||||||
|
- name: Merge main into PRs
|
||||||
|
shell: python
|
||||||
|
run: |
|
||||||
|
from github import Github
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Authenticate with the GitHub Token
|
||||||
|
g = Github(os.getenv('GITHUB_TOKEN'))
|
||||||
|
|
||||||
|
# Get the repository dynamically
|
||||||
|
repo = g.get_repo(os.getenv('GITHUB_REPOSITORY'))
|
||||||
|
|
||||||
|
# List all open pull requests
|
||||||
|
open_pulls = repo.get_pulls(state='open', sort='created')
|
||||||
|
|
||||||
|
for pr in open_pulls:
|
||||||
|
try:
|
||||||
|
# Attempt to merge main into the PR branch
|
||||||
|
message = f"Merge 'main' into PR #{pr.number} by https://ultralytics.com/actions"
|
||||||
|
merge_commit = repo.merge(pr.head.ref, 'main', commit_message=message)
|
||||||
|
print(f"Merged 'main' into PR #{pr.number} ({pr.head.ref}) successfully.")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Could not merge 'main' into PR #{pr.number} ({pr.head.ref}): {e}")
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
|
||||||
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue