Для большей изоляции и переносимости Jenkins рекомендую запускать его в контейнере, для этого проще всего использовать готовое решение docker-jenkinsci. Ниже расскажу как запустить его, настроить Nginx и перенести данные.
Установка
Можете использовать мой немного исправленный форк docker-jenkinsci, но лучше сделайте свой со своими настройками. После чего склонируйте к себе на сервер:
Подключим сертификаты и будем проксировать на localhost:8080 (или какой угодно другой адрес, указанный в docker-compose.yml)
server {
listen 443 ssl;
server_name jenkins.example.org;
ssl_certificate /etc/nginx/certs/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/privkey.pem;
auth_basic "closed site"; # Рекомендую прятать Jenkins за base-auth, в Jenkins часто находят уязвимости, продукт популярный. Общая Basic Auth это дополнительная безопасность
auth_basic_user_file htpasswd; # Ниже показываю как сгенерировать этот файл, который Nginx будет искать в /etc/nginx
location / {
proxy_set_header Authorization ""; # Тут мы сбрасываем заголовок с Basic Auth, иначе Jenkins пытается его использовать для авторизации пользователя в своем интерфейсе. Я разделяю эти авторизации для себя
proxy_pass http://localhost:8080;
}
}
server {
listen 80;
server_name jenkins.example.org;
return 301 https://$host$request_uri;
}
Как получить бесплатные SSL-сертификаты от LetsEncypt читаем в статье.
Во время запуска, в консоли отобразиться пароль, скопируйте и введите его в поле "Administrator password" веб-интерфейса (по адресу https://jenkins.example.org ).
Вас спросят какие плагины установить, советую выбрать "Select plugins to install" и выбрать минимальный подходящий вам набор (Git, Build Timeout и прочие на которых стоит галочка и вы осознаете для чего выбранный плагин вам нужен, остальное доустановите потом).
Далее вас попросят создать учетную запись "Create First Admin User", думаю справитесь.
Авто-запуск Jenkins в Docker
Теперь вы можете запускать Jenkins в бекграунде:
docker-compose up -d
Или лучше разместите сервис-файл для systemd по пути /etc/systemd/system/docker-jenkinsci.service:
[Unit]
Description=Docker Compose Service for Jenkins CI
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/home/example/docker-jenkinsci
ExecStart=/usr/bin/docker-compose up
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
Restart=on-failure
[Install]
WantedBy=multi-user.target
Комментарии
Оставьте свой комментарий