gpt4 book ai didi

powershell - 如何在 GitLab CI YAML 文件中包含 PowerShell 脚本文件

转载 作者:行者123 更新时间:2023-12-02 22:12:12 25 4
gpt4 key购买 nike

目前,我的 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 没有“将文件内容包含到脚本 block ”的功能。
  • GitLab CI include功能不导入 YAML anchor 。
  • GitLab CI 无法连接数组。所以你不能写before_script在一个 .gitlab-ci.yml 文件中,然后在 before_script 中使用它在另一个。你只能重写它,不能连接。

  • 由于所有这些问题,您无法轻松管理脚本;拆分它们,组织它们并做另一个很好的开发人员分解的东西。
    有可能的解决方法。您可以将脚本存储在其他地方; gitlab runner 可以在哪里找到它们,然后通过 source /ci-scripts/my-script.sh 将它们注入(inject)到您当前的工作环境中在 before_script堵塞。
    存储 ci 脚本的可能位置:
  • 带有所有构建/测试/部署实用程序和 ci 脚本的特殊 docker 镜像
  • 相同但专用的构建服务器
  • 您可以部署包含脚本的简单网页,然后在 before_script 中下载和导入。 .以防万一,确保除了 gitlab runner 之外没有人可以访问它。

  • 使用 powershell
    只有在 Windows 上安装了 GitLab Runner 才能使用 powershell。在这种情况下,您不能使用其他任何东西。

    关于powershell - 如何在 GitLab CI YAML 文件中包含 PowerShell 脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59794871/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com