Сделать переменную среды доступной из формулы - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь написать частный домашний сигнал для gitlab благодаря этой статье: 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.

К сожалению, загрузка не удалась, поскольку переменная HOMEBREW_GITLAB_TOKEN не известна из процесса brew.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Homebrew имеет несколько уровней фильтрации переменных среды. Первое, что встречается, относится к предыдущей версии вашего вопроса, где у вас была переменная GITLAB_HOMEBREW_TOKEN. начальная фильтрация Homebrew позволяет только определенным переменным среды проходить через команды brew, чтобы избежать загрязнения среды сборки. Таким образом, GITLAB_HOMEBREW_TOKEN не будет передано, потому что оно не начинается с HOMEBREW_ (или не соответствует никаким другим переменным из белого списка).

Второй уровень фильтрации - это тот, который вы в данный момент используете, когда «чувствительные» переменные среды фильтруются , если они соответствуют следующему регулярному выражению 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 для справки о типах фильтрации переменных среды, которая существует.

0 голосов
/ 15 января 2019

Удалите $ из имени переменной env

system "echo", ENV["GITLAB_HOMEBREW_TOKEN"]

См:

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