首页 > 解决方案 > 如何防止重复构建 pull_request 并推送 Travis

问题描述

我面临一个问题,每次推送到 git 存储库都会触发构建,并且每次拉取请求更新也会触发构建。这样,每当对拉取请求进行新推送时,都会启动两个构建过程:一个用于更新拉取请求,一个用于进行推送。两者都执行重复的阶段:构建和测试。

我试图通过使用commit_message条件来解决这个问题,但仍然无法让它按我的意愿工作。

我想要的是:

我的(简化的).travis.yml文件是:

group: vm
services:
  - docker

git:
  depth: false

env:
  global:
    - MYVAR="VARVALUE"

jobs:
  include:
    - stage: "build"
      if: type = pull_request OR commit_message =~ /#ci-test/
      script: build_docker_image.sh

    - stage: "tests"
      if: type = pull_request OR commit_message =~ /#ci-test/
      script: run_tests.sh

    - stage: "deploy to dev"
      if: type = pull_request
      script: do_the_deploy_to_dev_magic.sh

    - stage: "deploy to production"
      if: type = push AND branch = master
      script: do_the_deploy_to_prod_magic.sh

在我添加commit_message条件之前,作业按预期触发,但仅用于拉取请求更新和推送到主分支。推送到其他分支并没有触发任何事情,就像当时预期的那样。添加commit_message条件后,它开始在任何分支中再次触发每次推送的作业。

我的另一个疑问是:commit_message条件检查是否仅针对最新的提交消息运行,还是检查分支/推送的每条提交消息?

谁能帮我弄清楚我做错了什么?

提前致谢。

标签: gitgithubtravis-ci

解决方案


推荐阅读