有没有办法在Pull Request上触发CircleCI构建?

时间:2017-06-21 09:59:35

标签: github circleci

所以,我遇到的问题是,现在CircleCI没有触发PR上的构建,我有检查,我只想在PR上运行。有这个选项:

  

仅构建拉取请求

     

默认情况下,我们将为此项目构建所有提交。一旦   打开,我们只会建立相关联的分支   请求打开。注意:对于您的默认分支,我们将始终构建所有分支   提交。

然而,这不是我需要的,因为我仍然需要在所有分支上的每次提交上运行一些检查,而不仅仅是默认分支。

这就是我在circle.yml文件中的内容:

test:
  override:
    - if [[ ! -z $CI_PULL_REQUEST ]] ; then yarn test:selenium ; fi

只有在打开PR后对分支进行了另一次推送才会触发此操作,因为只有这样才能触发构建。

我一直无法为此找到解决方法,有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

现在,如果您在github上,有一种方法,并且您愿意运行快速的github动作来给CircleCI发痒。动作非常快,因此不会花费很多github动作时间。

通过将以下内容保存在.github / workflows / main.yml

中来设置操作
name: CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  pull_request:
    types: [opened,reopened]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    - name: Tickle CircleCI
      env:
        CIRCLE_BRANCH: ${{ github.head_ref }}
      run: |
        curl -X POST \
        -H 'Circle-Token: ${CIRCLE_TOKEN}' \
        -H 'Content-Type: application/json' \
        -H 'Accept: application/json' \
        -d "{\"branch\":\"${CIRCLE_BRANCH}\"}" \
        https://circleci.com/api/v2/project/<project_slug>/pipeline

用项目的gh / / 的段塞替换

现在,在CircleCI中设置一个令牌,并将其作为CIRCLE_TOKEN添加到github操作的秘密中。

接下来,在第一步中要有条件运行的任何作业中,向.circleci / config.yml添加一个步骤。我们总是在master上运行测试 因此将其考虑在内。随时调整以适应您的需求。

      - run:
          name: Check for PR or master
          command: |
            if [ -z "$CIRCLE_PULL_REQUEST" ]; then
              if [ "$CIRCLE_BRANCH" != "master" ]; then
                echo "Not a PR or master, halting"
                circleci step halt
              fi
            fi

如果PR未打开,则作业将在CircleCI上运行,然后立即停止。就CircleCI时间而言,这也不是超级昂贵的,因此总的来说,这使我们能够以合理的成本运行所有提交到master的提交以及开放式PR中的任何内容。

打开PR时,将运行github操作并触发CircleCI重新运行,但是由于PR现在已打开,因此它将完全运行。

这种方法的一个缺点是,您将在PR打开之前对提交的运行进行绿色检查,表明测试已通过,但没有通过,但是,一旦github操作运行了最后的提交,您就在乎,当CircleCI重新运行作业时,将变回黄色。

将来的提交仅由CircleCI运行,并且一旦PR打开,github动作根本不会运行,而在github动作中却什么也不花钱。