Практическое задание

Эта задача — шаг 10 курса «CI/CD: пайплайны и docker compose»

Секрет в CI: маскированная переменная

средне~15 мин

В проекте app (клон в /root/app, вход в веб — на вкладке «GitLab») джоба deploy подписывает релиз токеном из переменной окружения DEPLOY_TOKEN. Такой переменной пока нет, поэтому пайплайн на main красный.

Токен лежит в /root/deploy-token.txt. Заведи в настройках проекта CI/CD-переменную DEPLOY_TOKEN с этим значением и сделай её маскированной: deploy.sh по неосторожности печатает токен, и в логе джобы вместо него должно быть [MASKED]. Потом запусти пайплайн на main заново и добейся зелёной джобы deploy с артефактом out/signature.txt.

Токен в репозиторий не коммить, deploy.sh и .gitlab-ci.yml не меняй.

Что потренируешь:
  • GitLab CI
  • CI/CD-переменные
  • masked
  • секреты

Разбор темы

Секреты — токены, пароли, ключи — в репозиторий не кладут: их заводят как CI/CD-переменные проекта, и раннер передаёт их джобе как переменные окружения. Флаг Masked велит GitLab заменять значение на [MASKED] в логе, даже если скрипт случайно его напечатал. Замаскировать можно не всякое значение: нужно не меньше 8 символов и без пробелов. Флаг Protected — отдельная настройка: такая переменная попадает только в пайплайны защищённых веток и тегов.

Что проверяется

  1. Переменная DEPLOY_TOKEN заведена и маскирована
  2. Последний пайплайн на main — зелёный
  3. Джоба deploy подписала релиз токеном из файла
  4. В логе джобы deploy токен скрыт
  5. deploy.sh и .gitlab-ci.yml не изменены

Как это выглядит