Секреты и переменные
env хранит один зашифрованный набор на окружение проекта плюс общие для команды
shared-наборы. Приложения читают их при деплое; CI и ваш ноутбук — через CLI.
Задать и удалить
xvii env set --project shop --env production STRIPE_KEY=sk_live_… WEBHOOK_SECRET=…
xvii env set --project shop --env production LOG_LEVEL=info --plain
xvii env unset --project shop --env preview OLD_FLAG
xvii env ls
По умолчанию значения секретны: панель показывает только имена, а каждый просмотр значения попадает в
журнал. --plain помечает несекретное значение, которое можно показывать.
--project и --env по умолчанию берутся из XVII_PROJECT и XVII_ENV (затем CI_ENVIRONMENT_NAME),
так что внутри проекта их можно задать один раз.
Виды
| Вид |
Доставляется как |
var |
переменная окружения |
file |
файл по пути, права 600; переменная содержит путь |
ssh |
пара ключей Ed25519, созданная здесь: публичная часть видна, приватная — файл |
Ссылки
Значение может ссылаться на другое; ссылка разрешается при чтении и никогда не выходит за права читающего:
DATABASE_URL=${{ shared.MAIN_DB }}
API_URL=${{ project:billing.production.PUBLIC_URL }}
Запуск с переменными
xvii env run --project api --env preview -- go test ./...
xvii env pull --project web --env preview # записать .env
xvii env pull --files --force # и файлы с SSH-ключами
eval "$(xvii env export --format shell)"
xvii env export --format json | jq .
run кладёт файлы во временную приватную папку на время команды и удаляет после; больше ничего на диск не
пишется.
Версии
Каждое изменение — новая версия всего набора. Панель показывает историю: кто и какие имена менял; любую
версию можно восстановить.
Кто что может
| Роль |
Незащищённые окружения |
Защищённые окружения |
Shared-наборы |
| viewer |
имена |
имена |
имена |
| developer |
читать и менять |
имена |
имена |
| admin |
читать и менять |
читать и менять |
читать и менять |
Просмотры и разрешения значений попадают в журнал с прочитанными именами.
Публичные переменные сборки
Переменные, которые фронтенд встраивает при сборке (VITE_, PUBLIC_, NEXT_PUBLIC_), оказываются в
файлах, которые может скачать кто угодно. Никогда не давайте секрету такой префикс и помните: изменение в env
не пересобирает бандл, в котором уже лежит старое значение.
Шифрование
У каждого набора свой ключ данных XChaCha20-Poly1305, запечатанный мастер-ключом инстанса; каждое значение
привязано к своему набору и имени. Мастер-ключ лежит в папке данных env: сохраняйте его вместе с базой
(backups это делает), иначе после восстановления значения не откроются.