script: 和 before_script: 在 gitlab-ci.yml 的作业中有何区别

Ous*_*uss 53 gitlab-ci gitlab-ci.yml

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

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

syt*_*ech 62

include:正如您所提到的,在使用(模板)和/或extends:和/或全局/默认值时,对于作业添加或覆盖步骤最有用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
Run Code Online (Sandbox Code Playgroud)

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

还值得一提的是,它after_script: script:/显着不同before_script:after_script在单独的 shell 实例中运行,并将在不同的情况下运行。请参阅文档以获取更多信息。

  • @Qamar 这听起来像是一个单独的问题。作为提示:查看 `cache:` 和 [gitlab 缓存文档](https://docs.gitlab.com/ee/ci/caching/#cache-python-dependencies)。如果您在查看后仍有疑问,请考虑提出您自己的问题。 (2认同)