从叉出来的代码拉取请求中运行GitHub Actions

4
我在 GitHub 上有一个源代码仓库,我创建了一个本地分支来进行开发。我有一个 GitHub Action 用于运行 Bandit 安全检查,但当我推送更改并从我的分支创建拉取请求时,Bandit 测试会在原始代码仓库中运行,而不是在拉取请求中的新代码上运行。
如何在拉取请求中运行 GitHub Action 工作流?
FYI:以下是 yml 文件中当前的 "on" 语句:
name: Security scan
on:
  push:
    branches:
      - master
  pull_request_target:
    branches: [main, dev]

这是你完整的 Github Actions 工作流 YAML 文件吗?我认为 steps 部分缺失了。 - flyingdutchman
4个回答

4
我们新增了一个名为pull_request_target的事件,它与pull_request事件几乎完全相同,具有相同的筛选器和有效负载。但是,它不是针对合并提交的工作流程和代码运行,而是针对拉取请求的基础工作流程和代码运行。
来源: https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/ 您仍然可以使用以下步骤从拉取请求中检出代码:
- uses: actions/checkout@v2
  with:
    ref: ${{github.event.pull_request.head.ref}}
    repository: ${{github.event.pull_request.head.repo.full_name}}

来源:https://github.community/t/running-code-from-forks-with-pull-request-target/126688/6


0

在推送或拉取请求事件上触发工作流程

使用pull_request

name: CI
on: [push, pull_request]
jobs:
  python-tests:
    runs-on: ubuntu-latest

    steps:
      ...

0

-1

我使用这篇博客文章为我的一个仓库设置了Github Actions。你可以查看一下,或许会有所帮助。此外,阅读来自Github的文档也可能有所帮助。

关于你提到的特定问题,正如其他人所提到的,你应该使用pull_request。以下是一个例子(此CI作业仅在拉取请求提交到主分支时触发):

name: Tests                                                                                 
on:
  pull_request:
    branches:
    - main                                                                                  
jobs:                                                                                       
  tests:                                                                                    
    runs-on: ubuntu-latest                                                                  
    steps:                                                                                  
    - uses: actions/checkout@v2                                                             
    - uses: actions/setup-python@v1                                                         
      with:                                                                                 
        python-version: 3.8                                                                 
        architecture: x64                                                                   
    - run: # security scan bandit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接