Менеджер учетных данных#

Для запуска используйте gsf-cli\credential_manager.cmd или gsf-cli/credential_manager.sh. Используется для управления логинами, паролями и токенами доступа к Git и репозиториям артефактов. Выполняйте команды из корня установленного GSF CLI под пользователем сборки.

Перед первым set зарегистрируйте мастер-ключ. Linux: ./config.sh register_private_key -c /opt/global. Windows, PowerShell: .\config.cmd register_private_key -c 'C:\programs'. В обоих случаях -c — существующий каталог, в котором будет создан или прочитан .gsf-cli.priv.

Настройки и зашифрованные пароли находятся в workspace/store.json, путь к ключу записан там же. При переносе установки нужны оба файла. Пошаговая настройка приведена в главах Linux и Windows.

Commands:#

usage: credential_manager.py [-h] cmd ...

positional arguments:
  cmd         Команды
    full_help
              Распечатать справку
    get       Получить учётные данные для URL
    show      Отобразить учетные данные
    git       git credential-helper
    set       Задать учетные данные по протоколу

options:
  -h, --help  show this help message and exit

Full_help#

usage: credential_manager.py full_help [-h]

options:
  -h, --help  show this help message and exit

Get#

Служебный интерфейс для инструментов сборки. Выводит JSON вида {"credential": {"user": "...", "password": "..."}}, а при отсутствии записи — {"credential": null}. Пароль возвращается открытым текстом. Для ручной проверки наличия записей используйте show.

usage: credential_manager.py get [-h] [-u U]

Получает учетные данные для заданного url.
Учетные данные предоставляются в поток вывода в формате json

options:
  -h, --help  show this help message and exit
  -u U        url для которого надо получить учетные данные

Show#

usage: credential_manager.py show [-h] [--reveal]

Отображает сохраненные учетные данные. Пароли по умолчанию скрыты.

options:
  -h, --help  show this help message and exit
  --reveal    Показать пароли в открытом виде

Команда show выводит пароль как ********. Параметр --reveal используйте только в локальной консоли. Не запускайте show --reveal в CI и не сохраняйте его вывод в лог.

Git#

Внутренний credential helper. Операция get возвращает Git подходящую запись, store и erase в текущей реализации не меняют хранилище. Для добавления и обновления данных используется команда set самого credential manager.

usage: credential_manager.py git [-h] command

Реализует credential-helper для git

positional arguments:
  command

options:
  -h, --help  show this help message and exit

Set#

usage: credential_manager.py set [-h] -u URL -l LOGIN (-p PASSWORD |
                                 --password-stdin)

Задает учетные данные для URL и вложенных путей на том же хосте.
Для CI используйте --password-stdin, чтобы пароль не передавался в аргументах процесса.

options:
  -h, --help            show this help message and exit
  -u, --url URL         Url для которого надо задать учетные данные
  -l, --login LOGIN     Имя пользователя
  -p, --password PASSWORD
                        Пароль
  --password-stdin      Прочитать пароль из стандартного потока ввода

Пример для CI:

printf '%s' "$REPOSITORY_TOKEN" | ./credential_manager.sh set \
  --url "$REPOSITORY_URL" \
  --login "$REPOSITORY_LOGIN" \
  --password-stdin

Windows, PowerShell, если секрет уже передан процессу через переменную окружения:

if (-not $env:REPOSITORY_TOKEN) { throw 'Не передан REPOSITORY_TOKEN' }
$env:REPOSITORY_TOKEN | .\credential_manager.cmd set `
  --url $env:REPOSITORY_URL --login $env:REPOSITORY_LOGIN --password-stdin
if ($LASTEXITCODE -ne 0) { throw 'Не удалось сохранить учётные данные' }

--password-stdin читает одну строку и убирает завершающий перевод строки. Параметр --password тоже поддерживается, но открытый секрет в аргументах может попасть в историю и список процессов. Для интерактивного скрытого ввода в Windows используйте пример из главы установки.

Использование для Git#

Сохраните учетные данные один раз для базового адреса Git-сервера:

printf '%s' "$GIT_TOKEN" | ./credential_manager.sh set \
  --url "<Базовый адрес Git-сервера>" \
  --login "build-user" \
  --password-stdin

Запись для базового адреса используется для всех вложенных путей с теми же протоколом, хостом и портом. Похожий адрес другого хоста не считается совпадением. Если подходящая запись найдена, GSF CLI автоматически подключает внутренний Git credential helper и отключает остальные helpers для этого вызова Git. Команда git и файлы bin/credential_manager_git.sh, bin/credential_manager_git.cmd предназначены для вызова из Git и не требуют ручной настройки.

Для другого хоста создайте отдельную запись. После смены токена повторите команду set с тем же URL.

В интерактивном режиме сохранённые данные используются автоматически, а без них остаётся стандартный запрос Git. В headless текущий код требует запись и для публичного Git URL. Если она отсутствует, команда завершается ошибкой до обращения к серверу.

Глобальный credential.helper store#

GSF CLI не включает credential.helper store автоматически. При использовании его внутреннего helper эта настройка не требуется. Если обычный Git без записи в GSF CLI постоянно запрашивает пароль, включить сохранение можно вручную, под тем пользователем Linux или Windows, который работает с Git:

git config --global credential.helper store

Команда включает helper. Чтобы сохранить данные, затем повторите Git-операцию и успешно авторизуйтесь. store записывает логин и пароль на диск открытым текстом, обычно в ~/.git-credentials. Подробнее — документация Git.

Эти данные не попадают в workspace/store.json. Для headless и ошибки «Не заданы учетные данные» нужна команда set менеджера GSF CLI, а не глобальный store.

Доступ SBT launcher#

Credential manager и Git helper не заменяют настройку launcher. Для закрытых SBT-репозиториев обязательны основной файл .sbt/.credentials и его копия .ivy2/.credentials, SBT_CREDENTIALS и три свойства JVM через JAVA_TOOL_OPTIONS:

  • -Dsbt.boot.credentials=<путь к основному файлу>;

  • -Dsbt.repository.config=<путь к repositories>;

  • -Dsbt.override.build.repos=true.

Настройте их под тем же пользователем на Linux или Windows до первого запуска SBT. После смены токена обновите обе копии файла, даже если запись в credential manager уже изменена.