Менеджер учетных данных#
Для запуска используйте 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 уже изменена.