ci: auto-create PR from dev to main on every push #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Auto PR dev → main | |
| on: | |
| push: | |
| branches: [dev] | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| open-pr: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Create PR if not exists | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const { data: prs } = await github.rest.pulls.list({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| head: `${context.repo.owner}:dev`, | |
| base: 'main', | |
| state: 'open', | |
| }); | |
| if (prs.length === 0) { | |
| await github.rest.pulls.create({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| head: 'dev', | |
| base: 'main', | |
| title: 'chore: merge dev into main', | |
| body: '### Auto-generated PR\nMerge latest `dev` changes into `main` to trigger a release.\n\n> Squash and merge to keep a clean history.', | |
| }); | |
| console.log('PR created.'); | |
| } else { | |
| console.log('PR already open:', prs[0].html_url); | |
| } |