CI и деплой
Официальный action
Работает в GitHub, Gitea и GitVerse — у всех трёх совместимый runtime.
- uses: aistastudio/env-action@v1
with:
url: https://env.aistastudio.ru
client-id: ${{ secrets.ENVMASTER_CLIENT_ID }}
client-secret: ${{ secrets.ENVMASTER_CLIENT_SECRET }}
project: billing-api
environment: production
validate: true # упасть до деплоя, если в схеме не хватает ключей
Необязательные входы: keys сужает выгрузку до перечисленных ключей (сузить
можно, расширить права — нет), file дополнительно кладёт dotenv с правами
0600, export-to-env: false отключает передачу через переменные окружения.
Выходы keys и count содержат только имена и количество — значений в них
нет никогда.
Каждое значение регистрируется в маскере логов раннера до того, как его
можно напечатать, и попадает в $GITHUB_ENV многострочной формой — переносы и
знак равенства внутри значения переживают передачу. На stdout секреты не
выводятся никогда.
Любой другой CI
envmaster export --project billing-api --env production --file deploy.env
# или, что лучше, без файла вовсе:
envmaster run --project billing-api --env production -- ./deploy.sh
Проверка полноты до деплоя
env.schema.yml описывает, какие ключи обязательны и в каких окружениях:
version: 1
keys:
- name: DB_PASSWORD
kind: secret
required: true
environments: [staging, production]
- name: LOG_LEVEL
kind: var
required: false
envmaster validate сверяет схему с тем, что реально лежит в сервисе, и
останавливает пайплайн, если ключа не хватает — до рантайма, а не после.
Проверка идёт по именам, значения не раскрываются.
Что показывать в логах
Ничего. Если очень нужно убедиться, что ключ доехал, печатайте длину или префикс отпечатка, но не значение — маскер спасает от случайности, а не от намеренного вывода.