条件 v0(已弃用)

此页面记录条件 v0,该版本已弃用,取而代之的是 新的版本 v1。如果您需要使用 v0,请通过在您的 .travis.yml 文件中添加 conditions: v0 来选择加入。

条件可用于通过在您的构建配置(您的 .travis.yml 文件)中指定条件来过滤掉和拒绝构建、阶段和作业。有关详细信息,请参见 条件构建、阶段和作业

指定条件 #

可以使用布尔语言如下指定条件

(NOT [term] OR [term]) AND [term]

术语定义为

[left-hand-side] [operator] [right-hand-side]

所有关键字(例如 ANDORNOTINIS、属性和函数)不区分大小写。

左侧 #

左侧部分可以是已知属性或函数调用。

已知属性为

  • type(当前事件类型,已知事件类型为:pushpull_requestapicron
  • repo(当前存储库标识符 owner_name/name
  • branch(当前分支名称;对于拉取请求:基本分支名称)
  • tag(当前标签名称)
  • sender(事件发送者的登录名)
  • forktruefalse,具体取决于存储库是否是分支)
  • head_repo(对于拉取请求:头部存储库标识符 owner_name/name
  • head_branch(对于拉取请求:头部存储库分支名称)

已知函数为

  • env(FOO)(环境变量 FOO 的值)

函数 env 目前仅支持在您的构建配置(例如,在 envenv.global 上)中给出的环境变量,不支持在您的存储库设置中指定的环境变量。

右侧 #

目前无法比较函数调用。这意味着如果您尝试评估类似以下内容

env(PRIOR_VERSION) != env(RELEASE_VERSION)

其中 PRIOR_VERSIONRELEASE_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_VERSIONRELEASE_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