代码之家  ›  专栏  ›  技术社区  ›  Martin Delille

使环境变量可从公式访问

  •  2
  • Martin Delille  · 技术社区  · 6 年前

    我尝试为Gitlab编写一个私有的自制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 命令。

    不幸的是,下载失败是因为 自制的Gitlab标记 变量未知 酿造 过程。

    有什么想法吗?

    2 回复  |  直到 5 年前
        1
  •  1
  •   davidjb    5 年前

    自制有多个级别的环境变量过滤。遇到的第一个问题与问题的前一个版本有关,您的变量在哪里 GITLAB_HOMEBREW_TOKEN . 自酿啤酒 initial filtering 只允许 specific environment variables 传递给 brew 避免污染生成环境的命令。所以, Gitlab_自制_代币 不会被通过,因为它不是从 HOMEBREW_ (或匹配任何其他白名单变量)。

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

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

    因为变量有关键字 TOKEN 在变量名中,它在到达公式之前被过滤掉。

    简而言之,您需要使用一个不同的环境变量名, 开始 具有 家庭布鲁斯 ,例如:

    HOMEBREW_GITLAB_SECRET=secretsquirrel brew install Pouet
    

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

        2
  •  0
  •   mrzasa    6 年前

    移除 $ 从env变量名

    system "echo", ENV["GITLAB_HOMEBREW_TOKEN"]
    

    见:

    [1] pry(main)> ENV['LC_NAME']
    => "pl_PL.UTF-8"
    [2] pry(main)> ENV['$LC_NAME']
    => nil