使用 github 操作创建拉取请求

Иго*_*ски 29 github pull-request github-actions

我试图让它发挥作用,但我也很困惑,在触发彼得埃文斯公关之前,它之间缺少什么。

这个场景非常简单,我喜欢在任何 feature/* 分支上推送,自动创建 PR,但相反,我遇到了奇怪的场景,其中开发更改应用于 feature/* 分支之上。有人可以给我提示吗?

name: Pull Request Action
on:
  push:
    branches:
      - feature/*

jobs:
  create-pull-request:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
          ref: develop
      
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v3.10.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          commit-message: Simple demo
          title: '[Example] Simple demo'
          body: >
            This PR is auto-generated by 
            [create-pull-request](https://github.com/peter-evans/create-pull-request).
          labels: feature, automated pr
          branch: feature/workflow-demo
Run Code Online (Sandbox Code Playgroud)

Sco*_*bey 80

我知道这个问题已经有一年了,询问的是操作create-pull-request,但对于那些不想使用第三方操作的人来说,如果您使用 Github 托管的运行器,Github 操作现在原生支持Github 命令行。请参阅:在工作流程中使用 Github CLI

这使得使用gh pr create命令创建拉取请求变得非常容易

像这样的东西:

  steps:
    - name: create pull request
      run: gh pr create -B base_branch -H branch_to_merge --title 'Merge branch_to_merge into base_branch' --body 'Created by Github action'
      env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

  • 确保您还在存储库的“设置 > 操作”下启用“允许 GitHub Actions 创建和批准拉取请求” (19认同)

Gra*_*fus 36

只是将其作为替代解决方案发布。如果您不想使用任何第三方操作,您可以使用 来实现这一点actions/github-script,它只需要更多的编码。

就目前情况而言,如果功能分支已经有一个开放的 PR,则该操作将会出错。如果这是一个问题,您可以使用该方法检查现有 PR github.rest.pulls.list,并通过两者进行过滤headbase因此它只会返回一个 PR 或不返回任何 PR。

name: Pull Request Action
on:
  push:
    branches:
      - feature/*
      
jobs:
  create-pull-request:
    runs-on: ubuntu-latest
    steps:
      - name: Create Pull Request
        uses: actions/github-script@v6
        with:
          script: |
            const { repo, owner } = context.repo;
            const result = await github.rest.pulls.create({
              title: '[Example] Simple demo',
              owner,
              repo,
              head: '${{ github.ref_name }}',
              base: 'develop',
              body: [
                'This PR is auto-generated by',
                '[actions/github-script](https://github.com/actions/github-script).'
              ].join('\n')
            });
            github.rest.issues.addLabels({
              owner,
              repo,
              issue_number: result.data.number,
              labels: ['feature', 'automated pr']
            });
Run Code Online (Sandbox Code Playgroud)


riQ*_*iQQ 7

通读自述文件,彼得·埃文斯的行动不符合您想要实现的目标。但是您可以使用repo-sync 的 pull-request 操作

name: Pull Request Action
on:
  push:
    branches:
      - feature/*

jobs:
  create-pull-request:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository code
        uses: actions/checkout@v2
      - name: pull-request
        uses: repo-sync/pull-request@v2
        with:
          destination_branch: "develop"
          github_token: ${{ secrets.GITHUB_TOKEN }}
          pr_label: "feature, automated pr"
          pr_title: "[Example] Simple demo"
Run Code Online (Sandbox Code Playgroud)