YAML 语法:如何在每个阶段之前获取 运行 的相同命令,而不在 YAML 文件中重复自己?
YML syntax: How do I get the same commands to run before each stage without repeating myself in the YML file?
我已经为我的自托管 运行ner 设置了一个 .gitlab-ci.yml
文件,如下所示。
stages:
- set-environment
- check-code
set-environment:
stage: set-environment
script:
- C:\Users79\Documents\WindowsPowerShell\profile.ps1
- conda activate temp
run_tests:
stage: check-code
script:
- pytest test.py
type_checker:
stage: check-code
script:
- (ls -recurse *.py).fullname | foreach-object {echo "`n$_`n";mypy --strict $_}
我打算使用 set-environment
阶段使 mypy
和 pytest
可用于后续的 check-code
阶段。不幸的是,这不是它的工作原理。 GitLab 在每个阶段完成后销毁 shell。
我知道这是我对 Gitlab Runner 工作原理的理解存在缺陷。如何在 run_tests
和 type_checker
之前使用 set-environment
运行 中的命令而不在 YML 文件中重复它们?
在 gitlab-ci.yaml 中你可以定义一个全局的 before_script
。它看起来像这样。
stages:
- check-code
before_script:
- C:\Users79\Documents\WindowsPowerShell\profile.ps1
- conda activate temp
run_tests:
stage: check-code
script:
- pytest test.py
type_checker:
stage: check-code
script:
- (ls -recurse *.py).fullname | foreach-object {echo "`n$_`n";mypy --strict $_}
我强烈建议您阅读 gitlab-ci.yaml documentation。因为还有更多像这样的好功能。
我已经为我的自托管 运行ner 设置了一个 .gitlab-ci.yml
文件,如下所示。
stages:
- set-environment
- check-code
set-environment:
stage: set-environment
script:
- C:\Users79\Documents\WindowsPowerShell\profile.ps1
- conda activate temp
run_tests:
stage: check-code
script:
- pytest test.py
type_checker:
stage: check-code
script:
- (ls -recurse *.py).fullname | foreach-object {echo "`n$_`n";mypy --strict $_}
我打算使用 set-environment
阶段使 mypy
和 pytest
可用于后续的 check-code
阶段。不幸的是,这不是它的工作原理。 GitLab 在每个阶段完成后销毁 shell。
我知道这是我对 Gitlab Runner 工作原理的理解存在缺陷。如何在 run_tests
和 type_checker
之前使用 set-environment
运行 中的命令而不在 YML 文件中重复它们?
在 gitlab-ci.yaml 中你可以定义一个全局的 before_script
。它看起来像这样。
stages:
- check-code
before_script:
- C:\Users79\Documents\WindowsPowerShell\profile.ps1
- conda activate temp
run_tests:
stage: check-code
script:
- pytest test.py
type_checker:
stage: check-code
script:
- (ls -recurse *.py).fullname | foreach-object {echo "`n$_`n";mypy --strict $_}
我强烈建议您阅读 gitlab-ci.yaml documentation。因为还有更多像这样的好功能。