gpt4 book ai didi

ruby - 使环境变量可从公式访问

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:24 24 4
gpt4 key购买 nike

感谢这篇文章,我尝试为 gitlab 编写一个私有(private)的 Homebrew 软件 tap:https://wheniwork.engineering/creating-a-private-homebrew-tap-with-gitlab-8800c453d893

这是我的公式:

class Pouet < Formula
desc "Pouet command line utility"
homepage "https://gitlab.mycompany.com/martin/Pouet"
url "https://gitlab.mycompany.com/api/v4/projects/0000017/repository/archive?private_token=#{ENV['HOMEBREW_GITLAB_TOKEN']}"
version "1.0"
sha256 "ffdb029ada6d03fe3fa323577693cc233ef3d2300784a8d79077cecf6df7a470"
def install
system "echo", ENV["HOMEBREW_GITLAB_TOKEN"]
end
test do
pouet --help
end
end

我在我的环境中定义了 HOMEBREW_GITLAB_TOKEN,因此可以从我启动 brew 命令的 shell 访问它。

很遗憾,下载失败,因为 HOMEBREW_GITLAB_TOKEN 变量在 brew 过程中未知。

有什么想法吗?

最佳答案

Homebrew 具有多级环境变量过滤。第一个遇到的问题与您的问题的先前版本有关,您在该版本中有变量 GITLAB_HOMEBREW_TOKEN。 Homebrew initial filtering只允许 specific environment variables传递给 brew 命令以避免污染构建环境。因此,GITLAB_HOMEBREW_TOKEN 不会通过,因为它不是以 HOMEBREW_ 开头(或匹配任何其他列入白名单的变量)。

第二级过滤是您当前正在点击的“敏感”环境变量 get filtered如果它们匹配以下 Ruby 正则表达式:

/(cookie|key|token|password)/i

因为您的变量在变量名称中包含关键字 TOKEN,所以它在到达您的公式之前会被过滤掉。

简而言之,您需要使用以HOMEBREW_开头的不同环境变量名称,例如:

HOMEBREW_GITLAB_SECRET=secretsquirrel brew install Pouet

并且您可以在公式的 Ruby 代码中访问它。

另见 https://docs.brew.sh/Formula-Cookbook#using-environment-variables了解存在的环境变量过滤类型的背景。

关于ruby - 使环境变量可从公式访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54203517/

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