git - 如何防止重复构建 pull_request 并推送 Travis
问题描述
我面临一个问题,每次推送到 git 存储库都会触发构建,并且每次拉取请求更新也会触发构建。这样,每当对拉取请求进行新推送时,都会启动两个构建过程:一个用于更新拉取请求,一个用于进行推送。两者都执行重复的阶段:构建和测试。
我试图通过使用commit_message
条件来解决这个问题,但仍然无法让它按我的意愿工作。
我想要的是:
- 如果提交消息包含文本
#ci-test
,运行阶段:build
和tests
。 - 如果更新或创建了拉取请求,请运行阶段
build
:tests
和deploy to dev
。 - 如果推送到主分支,则运行阶段
build
:tests
和deploy to prod
。
我的(简化的).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
条件检查是否仅针对最新的提交消息运行,还是检查分支/推送的每条提交消息?
谁能帮我弄清楚我做错了什么?
提前致谢。
解决方案
推荐阅读
- c# - My snake program won't show the objects I drew. How can I fix it?
- c# - Azure 函数创建 blob
- spring-boot - 使用 Spring Data 本机查询时,具有该位置 [1] 的参数不存在错误
- c# - How to check for overlapping date ranges if one has null value
- android-room - 房间数据库和视图模型如何工作?
- excel - How to copy and paste values into next empty row in table on the same Worksheet
- ionic-framework - 工具栏中的 Ionic 4 ion-title 未以 android 为中心
- jsf - Forbid the access to pages using navigation rules - JSF
- c++ - C++11 性能:Lambda 内联与函数模板专业化
- c - 为什么在 printf 中使用指针转换为 (void*)p?