如何在 GitLab CI YAML 文件中包含 PowerShell 脚本文件
How to include a PowerShell script file in a GitLab CI YAML file
目前我的 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。
我该怎么做?
拆分 shell 脚本和 GitLab CI 语法
- GitLab CI 没有“将文件内容包含到脚本块”的功能。
- GitLab CI
include
功能不导入 YAML 锚。
- GitLab CI 无法连接数组。因此,您不能在一个 .gitlab-ci.yml 文件中写入
before_script
,然后在另一个文件的 before_script
中使用它。只能rewrite,不能concat。
由于所有这些问题,您无法轻松管理您的脚本;拆分它们,组织它们并做另一个很好的开发人员分解工作。
有可能的解决方法。您可以将脚本存储在其他地方; gitlab runner 可以到达它们的地方,然后通过 before_script
块中的 source /ci-scripts/my-script.sh
将它们注入到您当前的工作环境中。
可能存储 ci 脚本的位置:
- Special docker 图像与所有 build/test/deploy 实用程序和 ci 脚本
- 相同但专用的构建服务器
- 您可以部署包含脚本的简单网页,然后在
before_script
中下载和导入。以防万一,确保除了 gitlab runner 之外没有人可以访问它。
使用电源shell
只有在 Windows 上安装了 GitLab Runner 才能使用 powershell。在那种情况下你不能使用任何其他东西。
目前我的 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。
我该怎么做?
拆分 shell 脚本和 GitLab CI 语法
- GitLab CI 没有“将文件内容包含到脚本块”的功能。
- GitLab CI
include
功能不导入 YAML 锚。 - GitLab CI 无法连接数组。因此,您不能在一个 .gitlab-ci.yml 文件中写入
before_script
,然后在另一个文件的before_script
中使用它。只能rewrite,不能concat。
由于所有这些问题,您无法轻松管理您的脚本;拆分它们,组织它们并做另一个很好的开发人员分解工作。
有可能的解决方法。您可以将脚本存储在其他地方; gitlab runner 可以到达它们的地方,然后通过 before_script
块中的 source /ci-scripts/my-script.sh
将它们注入到您当前的工作环境中。
可能存储 ci 脚本的位置:
- Special docker 图像与所有 build/test/deploy 实用程序和 ci 脚本
- 相同但专用的构建服务器
- 您可以部署包含脚本的简单网页,然后在
before_script
中下载和导入。以防万一,确保除了 gitlab runner 之外没有人可以访问它。
使用电源shell
只有在 Windows 上安装了 GitLab Runner 才能使用 powershell。在那种情况下你不能使用任何其他东西。