script: 和 before_script: inside a job in gitlab-ci.yml 之间有什么区别

What is difference between script: and before_script: inside a job in gitlab-ci.yml

.gitlab-ci.yml 中,可以添加一个默认值 before_script,它在定义的作业中的所有 script 之前运行。

我的问题是为什么要在作业中定义 before_script 而不是仅在作业中使用 script?在作业中使用 before_script 只是为了覆盖默认的 before_script,还是有其他情况或原因?

在使用 include:(模板)and/or extends: and/or globals/default for before_script 时添加或覆盖步骤最有用] 如你所说。

例如,您可以创建一个隐藏密钥作业,该作业定义 script: 旨在由其他作业扩展。那些扩展它的工作可以提供一个 before_script: 键而不覆盖 script: ,反之亦然。

.install_dependencies:
  before_script:
    - pip install --upgrade pip
    - pip install -r requirements.txt

my_test_job:
  extends: .install_dependencies
  script:
    - pytest

所以,它只是为了工作的组合。否则,没有区别。 before_script:script: 在作业 运行 时简单地连接在一起。

还值得一提的是,after_script: script:/before_script: 有很大不同。 after_script 运行 在一个单独的 shell 实例中,并且将 运行 在不同的情况下。有关详细信息,请参阅 the docs