已弃用的关键字
部分 CI/CD 关键字已被弃用,不再推荐使用。
这些关键字仍可使用以确保向后兼容性, 但可能在未来的主要版本中被移除。
全局定义的 image、services、cache、before_script、after_script
全局定义 image、services、cache、before_script 和 after_script 已被弃用。
请改用 default。
例如:
default:
image: ruby:3.0
services:
- docker:dind
cache:
paths: [vendor/]
before_script:
- bundle config set path vendor/bundle
- bundle install
after_script:
- rm -rf tmp/only / except
only 和 except 已被弃用。要控制何时将作业添加到流水线,请改用 rules。
您可以使用 only 和 except 来控制何时将作业添加到流水线。
- 使用
only定义作业何时运行。 - 使用
except定义作业不何时运行。
only:refs / except:refs
only:refs 和 except:refs 已被弃用。要使用 refs、正则表达式或变量
来控制何时将作业添加到流水线,请改用 rules:if。
您可以使用 only:refs 和 except:refs 关键字,根据分支名称或流水线类型
来控制何时将作业添加到流水线。
关键字类型:作业关键字。您只能将其作为作业的一部分使用。
支持的值:包含任意数量的数组:
- 分支名称,例如
main或my-feature-branch。 - 匹配分支名称的正则表达式,例如
/^feature-.*/。 - 以下关键字:
值 描述 api由 pipelines API 触发的流水线。 branches当流水线的 Git 引用是一个分支时。 chat使用 GitLab ChatOps 命令创建的流水线。 external当您使用 GitLab 以外的 CI 服务时。 external_pull_requests当 GitHub 上的外部拉取请求被创建或更新时(参见 外部拉取请求的流水线)。 merge_requests在创建或更新合并请求时创建的流水线。启用 合并请求流水线、合并结果流水线 和 合并列车。 pipelines通过 使用 API 和 CI_JOB_TOKEN或trigger关键字创建的 多项目流水线。pushes由 git push事件触发的流水线,包括分支和标签。schedules定时流水线。 tags当流水线的 Git 引用一个标签时。 triggers使用 触发令牌 创建的流水线。 web在 GitLab UI 中从项目的 Build > Pipelines 部分选择 New pipeline 创建的流水线。
only:refs 和 except:refs 的示例:
job1:
script: echo
only:
- main
- /^issue-.*$/
- merge_requests
job2:
script: echo
except:
- main
- /^stable-branch.*$/
- schedules其他详细信息:
-
定时流水线在特定分支上运行,因此配置了
only: branches的作业 也会在定时流水线上运行。添加except: schedules可以防止配置了only: branches的作业 在定时流水线上运行。 -
没有使用其他关键字的
only或except等同于only: refs或except: refs。例如,以下两个作业配置具有相同的行为:job1: script: echo only: - branches job2: script: echo only: refs: - branches -
如果作业不使用
only、except或rules,则默认情况下only设置为branches和tags。例如,
job1和job2是等效的:job1: script: echo "test" job2: script: echo "test" only: - branches - tags
only:variables / except:variables
only:variables 和 except:variables 已被弃用。要使用 refs、正则表达式或变量
来控制何时将作业添加到流水线,请改用 rules:if。
您可以使用 only:variables 或 except:variables 关键字,根据 CI/CD 变量 的状态
来控制何时将作业添加到流水线。
关键字类型:作业关键字。您只能将其作为作业的一部分使用。
支持的值:
- CI/CD 变量表达式 的数组。
only:variables 的示例:
deploy:
script: cap staging deploy
only:
variables:
- $RELEASE == "staging"
- $STAGINGonly:changes / except:changes
only:changes 和 except:changes 已被弃用。要使用已更改的文件来控制
何时将作业添加到流水线,请改用 rules:changes。
当 Git push 事件修改文件时,使用 changes 关键字与 only 一起运行作业,
或与 except 一起跳过作业。
在具有以下 refs 的流水线中使用 changes:
branchesexternal_pull_requestsmerge_requests
关键字类型:作业关键字。您只能将其作为作业的一部分使用。
支持的值:包含任意数量的数组:
- 文件路径。
- 通配符路径,用于:
- 单个目录,例如
path/to/directory/*。 - 目录及其所有子目录,例如
path/to/directory/**/*。
- 单个目录,例如
- 所有具有相同扩展名或多个扩展名的文件的通配符 glob 路径,例如
*.md或path/to/directory/*.{rb,py,sh}。 - 根目录或所有目录中文件的通配符路径,用双引号括起来。
例如
"*.json"或"**/*.json"。
only:changes 的示例:
docker build:
script: docker build -t my-image:$CI_COMMIT_REF_SLUG .
only:
refs:
- branches
changes:
- Dockerfile
- docker/scripts/*
- dockerfiles/**/*
- more_scripts/*.{rb,py,sh}
- "**/*.json"其他详细信息:
- 如果任何匹配的文件被更改(
OR操作),changes解析为true。 - Glob 模式使用 Ruby 的
File.fnmatch和 标志File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB进行解释。 - 如果您使用除
branches、external_pull_requests或merge_requests以外的 refs,changes无法确定给定文件是新文件还是旧文件,并且始终返回true。 - 如果您将
only: changes与其他 refs 一起使用,作业会忽略更改并始终运行。 - 如果您将
except: changes与其他 refs 一起使用,作业会忽略更改并且从不运行。
相关主题:
only:kubernetes / except:kubernetes
only:kubernetes 和 except:kubernetes 已被弃用。要控制当 Kubernetes 服务在项目中处于活动状态时
是否将作业添加到流水线,请改用 rules:if 和
CI_KUBERNETES_ACTIVE 预定义的 CI/CD 变量。
使用 only:kubernetes 或 except:kubernetes 来控制当 Kubernetes 服务在项目中处于活动状态时
是否将作业添加到流水线。
关键字类型:作业特定的。您只能将其作为作业的一部分使用。
支持的值:
kubernetes策略仅接受active关键字。
only:kubernetes 的示例:
deploy:
only:
kubernetes: active在此示例中,deploy 作业仅在 Kubernetes 服务在项目中处于活动状态时运行。
GitLab Pages 的 publish 关键字和 pages 作业名称
作业级别的 publish 关键字和 GitLab Pages 部署作业的 pages 作业名称已被弃用。
要控制页面部署,请改用 pages 和 pages.publish
关键字。