当前,我的GitLab CI YAML文件中有一个大型Bash脚本。下面的示例说明了如何对功能进行分组,以便可以在CI流程中使用它们。
.test-functions: &test-functions |
function write_one() { echo "Function 1" }
function write_two() { echo "Function 2"}
function write_three() { echo "Function 3"}
.plugin-nuget:
tags:
- test-es
- kubernetes
image: mygitlab-url.com:4567/containers/dotnet-sdk-2.2:latest
script:
- *test-functions
- write_one
- write_two
- write_three
以下示例显示了如何在另一个文件中包含YAML文件:
include:
- project: MyGroup/GitlabCiPlugins/Dotnet
file: plugin-test.yml
ref: JayCiTest
我想对我的脚本做同样的事情。与其将脚本与YAML放在同一个文件中,我不希望包含该文件,以便我的YAML可以访问脚本的功能。如果可能的话,我也想使用PowerShell代替Bash。
我该怎么做?
答案 0 :(得分:1)
include
功能不会导入YAML锚点。before_script
,然后在另一个before_script
中使用它。您只能重写它,不能重写。所有这些问题不允许您管理脚本,拆分脚本并进行其他出色的开发人员分解工作。
有一些可能的变通办法-将脚本存储在其他地方,让gitlab运行程序可以访问它们,然后通过source /ci-scripts/my-script.sh
块中的before_script
将它们注入到当前的工作环境中。
存储ci脚本的可能位置:
before_script
中下载并导入。为了以防万一,请确保除gitlabRunner之外的任何人都无法访问它。仅当在Windows上安装GitLab Runner时,才能使用powershell。在这种情况下,您不能使用其他任何东西。