条件 v0(已弃用)
此页面记录条件 v0,该版本已弃用,取而代之的是 新的版本 v1。如果您需要使用 v0,请通过在您的 .travis.yml 文件中添加
conditions: v0
来选择加入。
条件可用于通过在您的构建配置(您的 .travis.yml
文件)中指定条件来过滤掉和拒绝构建、阶段和作业。有关详细信息,请参见 条件构建、阶段和作业。
指定条件 #
可以使用布尔语言如下指定条件
(NOT [term] OR [term]) AND [term]
术语定义为
[left-hand-side] [operator] [right-hand-side]
所有关键字(例如 AND
、OR
、NOT
、IN
、IS
、属性和函数)不区分大小写。
左侧 #
左侧部分可以是已知属性或函数调用。
已知属性为
type
(当前事件类型,已知事件类型为:push
、pull_request
、api
、cron
)repo
(当前存储库标识符owner_name/name
)branch
(当前分支名称;对于拉取请求:基本分支名称)tag
(当前标签名称)sender
(事件发送者的登录名)fork
(true
或false
,具体取决于存储库是否是分支)head_repo
(对于拉取请求:头部存储库标识符owner_name/name
)head_branch
(对于拉取请求:头部存储库分支名称)
已知函数为
env(FOO)
(环境变量FOO
的值)
函数 env
目前仅支持在您的构建配置(例如,在 env
或 env.global
上)中给出的环境变量,不支持在您的存储库设置中指定的环境变量。
右侧 #
目前无法比较函数调用。这意味着如果您尝试评估类似以下内容
env(PRIOR_VERSION) != env(RELEASE_VERSION)
其中 PRIOR_VERSION
和 RELEASE_VERSION
是在 .travis.yml 中其他地方定义的环境变量,则条件将被评估为 true,即使它为 false。
处理函数调用比较始终评估为 true 的行为的最佳方法是创建一个脚本,以相反的方式表达条件测试,并在条件为 false 时应用 travis_terminate
。此脚本可以在部署阶段调用。例如,继续使用上面的示例,部署阶段将包括
jobs:
include:
- stage: deploy
if: attribute=value
env:
- PRIOR_VERSION=$(git describe --abbrev=0 --tags)
- RELEASE_VERSION=$(grep to get version number)
script:
- '"$PRIOR_VERSION" = "$RELEASE_VERSION" && travis_terminate || echo "Deploying latest version ..."'
由于我们希望仅在 PRIOR_VERSION
和 RELEASE_VERSION
不相等时部署构建,因此我们测试相等性,如果发现为 true,则终止。
相等性和不等性 #
这将按字面匹配字符串
branch = master
env(foo) = bar
sender != my-bot
匹配 #
这将使用正则表达式匹配字符串
branch =~ ^master$
env(foo) =~ ^bar$
包括 #
这将匹配一组(数组)值
branch IN (master, dev)
env(foo) IN (bar, baz)
存在 #
这要求值存在或不存在
branch IS present
branch IS blank
env(foo) IS present
env(foo) IS blank