gpt4 book ai didi

github - 有没有办法在拉取请求上触发 CircleCI 构建?

转载 作者:行者123 更新时间:2023-12-03 14:39:44 26 4
gpt4 key购买 nike

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

Only build pull requests

By default, we will build all the commits for this project. Once turned on, we will only build branches that have associated pull requests open. Note: For your default branch, we will always build all commits.



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

这是我的 circle.yml 文件中的内容:
test:
override:
- if [[ ! -z $CI_PULL_REQUEST ]] ; then yarn test:selenium ; fi

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

我只是找不到解决方法,有人有任何想法吗?

最佳答案

如果你在 github 上,现在有一种方法,并且你愿意运行一个快速的 github 操作来逗乐 CircleCI。 Action 非常快,所以不会消耗太多 github Action 时间。
通过在 .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

替换为您的项目的 slug,即 gh/ /
现在在 CircleCI 中设置一个 token ,并将其作为 CIRCLE_TOKEN 添加到 github 操作中的 secret 中。
接下来,在您希望有条件地作为第一步运行的任何作业中,向您的 .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 重新运行作业时,返回黄色。
future 的提交仅由 CircleCI 运行,一旦 PR 打开,github 操作根本不会运行,在 github 操作中您无需付出任何代价。

关于github - 有没有办法在拉取请求上触发 CircleCI 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44672893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com