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。
在 .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。