我的目标是在Travis流程中有三个步骤:
-
测试(始终)
-
生成(docker映像,仅当合并分支时
进入开发阶段)
-
部署(与构建相同)
我读过
documentation on build stages and conditionals
但我似乎误解了什么,因为Travis总是执行所有三个阶段(例如,当我推一个功能分支时)。
我当前的设置如下:
jobs:
include:
- stage: test
script: ".travis/01-test.sh"
- stage: build
script: ".travis/02-build-and-push-image.sh"
if: (branch = develop) AND (NOT(type IN (push, pull_request)))
- stage: deploy
script: ".travis/03-deploy.sh staging"
if: (branch = develop) AND (NOT(type IN (push, pull_request)))
当我打开Travis构建页面上的config选项卡时,我可以看到这个配置,所以它不应该是一个解析错误。我也尝试过分别列出作业和阶段,但结果是一样的:
jobs:
include:
- stage: test
script: ".travis/01-test.sh"
- stage: build
script: ".travis/02-build-and-push-image.sh"
- stage: deploy
script: ".travis/03-deploy.sh staging"
stages:
- test
- name: build
if: (branch = develop) AND (NOT(type IN (push, pull_request)))
- name: deploy
if: (branch = develop) AND (NOT(type IN (push, pull_request)))
我怎样才能做到这一点?我错过什么了吗?我知道构建阶段是一个beta特性,但我认为这应该已经可以工作了,根据
Travis blog post
.