所以,我遇到的问题是,现在CircleCI没有触发PR上的构建,我有检查,我只想在PR上运行。有这个选项:
仅构建拉取请求
默认情况下,我们将为此项目构建所有提交。一旦 打开,我们只会建立相关联的分支 请求打开。注意:对于您的默认分支,我们将始终构建所有分支 提交。
然而,这不是我需要的,因为我仍然需要在所有分支上的每次提交上运行一些检查,而不仅仅是默认分支。
这就是我在circle.yml文件中的内容:
test:
override:
- if [[ ! -z $CI_PULL_REQUEST ]] ; then yarn test:selenium ; fi
只有在打开PR后对分支进行了另一次推送才会触发此操作,因为只有这样才能触发构建。
我一直无法为此找到解决方法,有没有人有任何想法?
答案 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动作中却什么也不花钱。