Установка Jenkins для личного использования
При разработке одного небольшого сервиса захотелось уже наконец устроить CI в этой дыре и запускать тесты после каждого локального коммита.
Понятно, что во избежание велосипедостроения нужно использовать Jenkins. При этом, чтобы не настраивать странные доступы к домашнему каталогу, Jenkins нужно запускать от собственного пользователя. Вдобавок лично меня раздражает держать терминал с запущенным скриптом типа ~/bin/start_jenkins.sh и тем более хранить командную строку с нужными ключами в .bash_history.
Решение проблемы даёт пользовательский systemd. Коротко о решении. Всё, связанное с jenkins, храним в каталоге ~/jenkins. Пакеты дистрибутива не используем, берём последний .war прямо с официального сайта. Настраиваем автозапуск Jenkins, поэтому слишком популярный порт 8080 заменяем на 8081.
Реализация всего вышесказанного укладывается в одну небольшую копипасту.
mkdir ~/jenkins
wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war -O - > ~/jenkins/jenkins.war
mkdir -p ~/.config/systemd/user
cat <<EOF > ~/.config/systemd/user/jenkins.service
[Unit]
Description=Jenkins CI server
After=network.target
[Service]
ExecStart=/usr/bin/java -Djava.awt.headless=true -DJENKINS_HOME=$HOME/jenkins -jar $HOME/jenkins/jenkins.war --logfile=$HOME/jenkins/jenkins.log --webroot=$HOME/jenkins/war --httpPort=8081 --httpListenAddress=127.0.0.1
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable jenkins
systemctl --user start jenkins
В итоге «домашний» Jenkins всегда будет доступен по адресу http://localhost:8081.