gpt4 book ai didi

gitlab - GitLab 是否提供一种方法来检查与管道关联的推送选项?

转载 作者:行者123 更新时间:2023-12-05 02:37:46 32 4
gpt4 key购买 nike

GitLab 支持多种 Push Options .有什么方法可以在 Web 用户界面或其他方式中检查管道或作业中使用了哪些推送选项?特别是,哪些 ci.variable 推送选项与作业或管道相关联?

一种解决方法是对每个作业运行 env,但似乎此信息可能已经在用户界面中可用。

最佳答案

Git 钩子(Hook)

要确切知道使用了哪些 git push options 的唯一确定方法是在 pre-receive 中。或后接收git hook或查看服务器日志。 这只能在 self 管理的 GitLab 实例上实现。

在这些钩子(Hook)中,GIT_PUSH_OPTION_COUNT告诉您使用了多少推送选项。变量 GIT_PUSH_OPTION_<i>包含每个选项。因此,您可以配置一个 Hook 来检查这些变量以了解使用了哪些选项。

使用API​​获取管道变量

如果您只需要知道用于创建管道的变量而不关心来源,则可以使用 pipelines API 来完成.

这将包括由 git push 选项添加的管道变量,但不区分由 git push 选项或其他来源添加的变量,并且不包含在作业级别或动态添加的变量。

curl --header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/1/pipelines/46/variables"

另请注意,变量可能会在流水线中途发生变化。因此,如果您必须 100% 确保管道中每个阶段的每项工作的环境,这可能还不够。

运行时内省(introspection)可能不足以区分

如果目标是明确地确定哪些变量是由 git push options(而不是任何其他来源)添加的,那么在运行时执行此操作可能很难 100% 确定。

在评估管道和运行作业时,环境变量配置可能已经更改,您无法 100% 确定变量的来源。在某些情况下,您可能可以通过反省环境、流水线配置文件、项目和组 CI/CD 配置等来猜测。但由于权限和其他问题,可能会有差距。

自省(introspection)确定变量来源的一些困难或不可能克服的障碍:

  1. 您可能没有检查祖先组或实例级变量的权限
  2. 如果您使用自托管运行器,则可以在运行器上配置变量
  3. 变量可以来自image:用过。
  4. 可以通过触发器或工件动态设置变量
  5. 管道/作业启动后变量配置可能会发生变化

换句话说,您可能不知道新变量是来自 git push 选项,还是您无法在运行时检查的任何其他内容的更改。

One workaround is to run env with every job

这将使您 100% 确定每项工​​作的环境。但是您仍然不知道哪些来自推送选项,而不是其他来源,如上所述。

您也可以人工制作环境并以编程方式检索该人工制品,但您可能会冒将敏感信息放入您的人工制品中的风险,因此这本身可能不是一个好主意,除非您非常小心地将它们排除在外。

你可以 enable debug logging但这也存在安全风险。

关于gitlab - GitLab 是否提供一种方法来检查与管道关联的推送选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69903456/

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