1. Jenkins 学习环境安装
Jenkins 的安装方式很多,在学习过程中,往往使用比较简单的方式进行安装,比如使用 Docker 直接启动Jenkins容器,或者采用软件仓库安装,抑或是直接使用war包启动。生产环境中,会涉及master和slave,一般使用 Docker 方式启动,或者在 Kubernertes 中安装。后续章节会讨论这些安装方式。
Jenkins 安装的官方文档: https://www.jenkins.io/doc/book/installing/。
当前在Jenkins服务器之外建立了一个Nginx服务器,将 jenkins.ddn.com 的请求全部转发到后端的 jenkins 服务器上。
1.1. Jenkins安装
1.1.1. 使用软件仓库安装
官方提供了Ubuntu 和 CentOS系的软件仓库,这里使用CentOS 7作为演示,无法使用科学上网的朋友使用其它安装方式
# 配置代理[root@centos-81 ~]# export http_proxy=http://10.4.7.1:10080[root@centos-81 ~]# export https_proxy=http://10.4.7.1:10080[root@centos-81 ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo[root@centos-81 ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key[root@centos-81 ~]# yum install -y jenkins java-1.8.0-openjdk-devel[root@centos-81 ~]# unset http_proxy https_proxy[root@centos-81 ~]# rpm -q jenkinsjenkins-2.277.2-1.1.noarch[root@centos-81 ~]# java -versionopenjdk version "1.8.0_282"OpenJDK Runtime Environment (build 1.8.0_282-b08)OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)[root@centos-81 ~]# systemctl daemon-reload[root@centos-81 ~]# systemctl start jenkins[root@centos-81 ~]# systemctl status jenkins● jenkins.service - LSB: Jenkins Automation ServerLoaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)Active: active (running) since Sat 2021-04-17 09:39:59 CST; 7s agoDocs: man:systemd-sysv-generator(8)Process: 1722 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)Tasks: 13Memory: 116.9MCGroup: /system.slice/jenkins.service└─1743 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/...Apr 17 09:39:58 centos-81 systemd[1]: Starting LSB: Jenkins Automation Server...Apr 17 09:39:58 centos-81 runuser[1727]: pam_unix(runuser:session): session opened for user jenkins by (uid=0)Apr 17 09:39:59 centos-81 jenkins[1722]: Starting Jenkins [ OK ]Apr 17 09:39:59 centos-81 systemd[1]: Started LSB: Jenkins Automation Server.# Jenkins 不是原生的service[root@centos-81 ~]# systemctl enable jenkinsjenkins.service is not a native service, redirecting to /sbin/chkconfig.Executing /sbin/chkconfig jenkins on[root@centos-81 ~]# chkconfig jenkins on
1.1.2. 使用war包安装
[root@centos-80 ~]# mkdir -p /opt/release/jenkins-2.249.3 && cd /opt/release/jenkins-2.249.3
[root@centos-80 jenkins-2.249.3]# yum install -y java
[root@centos-80 jenkins-2.249.3]# wget -c http://ftp-chi.osuosl.org/pub/jenkins/war-stable/2.249.3/jenkins.war
[root@centos-80 jenkins-2.249.3]# ln -s /opt/release/jenkins-2.249.3 /opt/apps/jenkins
[root@centos-80 jenkins-2.249.3]# java -jar jenkins.war --help
[root@centos-80 ~]# useradd jenkins
[root@centos-80 ~]# chown -R jenkins.jenkins /opt/release/jenkins-2.249.3 /opt/logs/jenkins/
[root@centos-80 ~]# su - jenkins
[jenkins@centos-80 ~]$ cd /opt/apps/jenkins/
[jenkins@centos-80 jenkins]$ bash run.sh start # 启动jenkins
启动脚本 run.sh 内容如下:
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
export JENKINS_HOME="/opt/apps/jenkins"
[ $USER != "jenkins" ] && echo "Please use jenkins run the shell script" && exit 1
cd $JENKINS_HOME
[ $# -eq 0 ] && action=start || action=$1
case $action in
start)
ps uax|grep -v grep| grep -q "jenkins.war" && echo "jenkins is running" && exit 2
java -jar jenkins.war --daemon --logfile=/opt/logs/jenkins/jenkins.log --httpPort=8080
;;
stop)
pid=$(ps uax|grep -v grep| grep "jenkins.war" | awk '{print $2}')
[ -z $pid ] && echo "jenkins not runing" && exit 3
kill $pid
;;
restart)
pid=$(ps uax|grep -v grep| grep "jenkins.war" | awk '{print $2}')
[ -n $pid ] && kill $pid
for i in {1..30}
do
count=$(ps uax|grep -v grep| grep "jenkins.war" | wc -l)
[ $count -ne 0 ] && sleep 1 && state=1 && continue
state=0 && java -jar jenkins.war --daemon --logfile=/opt/logs/jenkins/jenkins.log --httpPort=8080 && break
done
[ $state -eq 1 ] && echo "jenkins stop failed" && exit 4
;;
*)
echo "bash $0 start|stop|restart"
esac
1.1.3. 使用Docker启动
Jenkins 镜像主页: https://hub.docker.com/_/jenkins
# 推荐使用docker-compose替代docker命令
# jenkins镜像中使用jenkins用户启动的,uid和gid都为1000
[root@centos-81 ~]# mkdir /data/jenkins/ ; chown 1000:1000 /data/jenkins/
[root@centos-81 ~]# docker run -d --name jenkin -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkins:2.60.3
1.1.4. 使用K8S部署jenkins
不推荐学习使用,因为k8s部署的jenkins一般为master,配合 Kubernetes 动态 agent 完成 Jenkins 是在 k8s 下的最佳实践!
1.2. Jenkins初始化
在上述安装完成之后,进入Jenkins主页: jenkins.ddn.com 后需要进行初始化操作:
- Jenkins 解锁

- 安装推荐的插件

- 创建用户

- 配置示例URL


- 安装bule ocean插件(推荐)
【系统管理】—> 【插件管理】—>【可选插件】—>搜索并安装 blue ocean
- 重启Jenkins实例,让Jenkins插件生效

- 修改Jenkins插件源(可选)
在当前实验中,Jenkins 插件下在速度较快,因此没有修改该参数。如果需要修改,可以如下操作:
在 /opt/apps/jenkins/hudson.model.UpdateCenter.xml 中修改 <url> </url> 为 <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> ,然后重启Jenkins服务

