У меня есть Jenkinsfile, использующий скриптовый синтаксис, на последнем шаге (развертывание) я просто выполняю «запуск докера» (я буду переходить к ansible в будущем).
Мое изображение докера должно указывать на базу данных через переменную среды, поэтому я использую это:
docker run -d --env DATABASE_EASYREC_HOST="somehost.com.br" \
--env DATABASE_EASYREC_PORT="5432" \
--env DATABASE_EASYREC_NAME="easyrec_stage" \
--env DATABASE_EASYREC_USER="postgres" \
--env DATABASE_EASYREC_PASS="Ronaldo1986" \
-p 8080:8080 --rm --name easyrecadm-stage namespace/myimage:prod
Как вы можете видеть, я использую somehost.com.br , чтобы найти мою базу данных, но я не думаю, что это хорошая практика - устанавливать IP, Port, User и Pass напрямую в Jenkinsfile, потому что, если в будущем база данных изменится на другую машину, мне нужно изменить свой Jenkinsfile.Итак, я думаю, что в некоторых решениях:
- Используйте переменную окружения из операционной системы в jenkinsfile, поэтому там, где работает jenkins, эта переменная должна быть создана.
- Создайте шаг в Jenkinsfile дляпопросите порт, хост, пользователя и пароль для базы данных
- Не изменяйте ничего, потому что это хорошая практика, указывающая на базу данных в Jenkinsfile