Jenkins介绍
在DevOps时代,持续集成和持续交付(CI/CD)已经耳熟能详,从构建到部署的自动一体化已经是成熟的技术。而Jenkins就是满足从构建到部署的自动化工具。Jenkins是以插件的形式来提供服务,他提供1000个插件来支持构建,部署,自动化,可以满足任何项目的需要。
1、持续集成和持续交付:作为一个可扩展的自动化服务器,Jenkins可以用做简单的CI(持续集成)工具,同样它也可以作为CD(持续交付)中心。
2、简易安装:Jenkins设计一个基于Java的独立程序,可以立即运行,包含Win,Mac OS,Linux操作系统。
3、配置简单:Jenkins有个Web界面,我们可以通过Web轻松设置和配置,其中包括即时错误检查和内置帮助。
4、插件:通过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具。
5、扩展:Jenkins 可以通过其插件架构进行扩展,从而为 Jenkins 可以做的事提供几乎无限的可能性。
6、分布式:Jenkins 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署。
参考文档:https://www.jenkins.io/zh/
要学会参考文档,文档是中文。
环境说明
安装都采用Linux系统:CentOS7.5,以虚拟机的方式进行
物理环境:Win10
注意:虚拟机需要能连接外网。
传统命令行安装
安装参考文档:https://pkg.jenkins.io/redhat-stable/
1、下载Jenkins 的Yum仓库源
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
如果失败,则自己创建,jenkins.repo内容如下:
[root@node3 ~]# cat /etc/yum.repos.d/jenkins.repo
[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat-stable
gpgcheck=1
2、导入密钥
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
3、安装Java环境,并安装Jenkins
Java环境说明:一般不用Java7了,我们安装Java8或者Java11都行
yum install -y fontconfig java-11-openjdk
yum -y install jenkins #如果第一次安装失败,Ctrl+C取消,然后再执行一遍此命令。
4、启动Jenkins
systemctl enable jenkins
systemctl restart jenkins
systemctl status jenkins
Jenkins默认监听8080端口,查看端口8080
[root@node3 ~]# ss -ntpul
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 *:* users:(("chronyd",pid=10896,fd=1))
udp UNCONN 0 0 ::1:323 :::* users:(("chronyd",pid=10896,fd=2))
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=1006,fd=3))
tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1336,fd=13))
tcp LISTEN 0 50 :::8080 :::* users:(("java",pid=37214,fd=114))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=1006,fd=4))
tcp LISTEN 0 100 ::1:25 :::* users:(("master",pid=1336,fd=14))
Jenkins的文件目录
[root@node3 ~]# rpm -ql jenkins
/etc/init.d/jenkins #Jenkins的启动目录
/etc/logrotate.d/jenkins #日志相关文件
/etc/sysconfig/jenkins #Jenkins的主配置文件
/usr/bin/jenkins
/usr/lib/systemd/system/jenkins.service
/usr/sbin/rcjenkins
/usr/share/java/jenkins.war
/usr/share/jenkins
/usr/share/jenkins/migrate
/var/cache/jenkins
/var/lib/jenkins #Jenkins的工作目录(非常重要)
/var/log/jenkins
重点说一下Jenkins的主配置文件和工作目录
Jenkins主配置文件
我们在这里主要配置 Jenkins 的工作目录、启动用户、启动端口。
vi /etc/sysconfig/jenkins
...
JENKINS_HOME="/var/lib/jenkins" #规定Jenkins的工作目录的路径jenkins数据,配置都放在这里jenkins主目录默认在/var/lib/jenkins 最重要的可以改成别的地方,把文件复制到那个目录就可以了,改的时候要看权限备份的时候,把目录可以打个包备份就可以了。
JENKINS_USER="jenkins" #Jenkins 默认的用户为 jenkins,生产环境建议使用 jenkins 用户,然后使用 sudo 进行授权,为了避免各种权限问题,改为 root 用户
JENKINS_PORT="8080" #前面说过Jenkins的默认监听端口是8080,这里可以修改
Jenkins 主程序目录
/usr/lib/jenkins/jenkins.war 是 Jenkins 的主程序文件
升级jenkins用得:
将来要升级jenkins的办法 简单办法直接把新版的war包 替换到这里的war包,把这个war包移走,搞个新版的war包过来,然后重启jenkins
systemctl restart jenkins
Jenkins的工作目录
/var/lib/jenkins 是 Jenkins 默认配置的主工作目录,我们可以在主配置文件进行设置
[root@node3 ~]# ll /var/lib/jenkins/
total 24
drwxr-xr-x. 3 jenkins jenkins 21 Mar 23 06:56 %C
-rw-r--r--. 1 jenkins jenkins 1660 Mar 23 07:02 config.xml
-rw-r--r--. 1 jenkins jenkins 156 Mar 23 07:02 hudson.model.UpdateCenter.xml
-rw-------. 1 jenkins jenkins 1712 Mar 23 07:02 identity.key.enc
-rw-r--r--. 1 jenkins jenkins 171 Mar 23 07:02 jenkins.telemetry.Correlator.xml
drwxr-xr-x. 2 jenkins jenkins 6 Mar 23 07:02 jobs #存放Jobs的配置及每次构建的结果的目录
-rw-r--r--. 1 jenkins jenkins 907 Mar 23 07:02 nodeMonitors.xml
drwxr-xr-x. 2 jenkins jenkins 6 Mar 23 07:02 nodes
drwxr-xr-x. 2 jenkins jenkins 6 Mar 23 07:02 plugins #存放插件的目录,等会在Web界面配置所安装过的插件全部都存放此类目录中
-rw-r--r--. 1 jenkins jenkins 64 Mar 23 07:02 secret.key
-rw-r--r--. 1 jenkins jenkins 0 Mar 23 07:02 secret.key.not-so-secret
drwx------. 2 jenkins jenkins 164 Mar 23 07:02 secrets #存放Jenkins第一次登陆密钥的目录
drwxr-xr-x. 2 jenkins jenkins 67 Mar 23 07:02 updates
drwxr-xr-x. 2 jenkins jenkins 24 Mar 23 07:02 userContent
drwxr-xr-x. 3 jenkins jenkins 56 Mar 23 07:02 users
#还有一个重要的目录,默认没有,只有当构建项目时才会自动创建,:worksspace:工作区目录,每次 job 执行构建时的工作目录,
其他目录及文件
/var/log/Jenkins Jenkins 日志文件目录
/etc/init.d/Jenkins Jenkins 启动文件
安装Jenkins
浏览器访问本地IP:8080
1、输入密钥,如下查看:
[root@node3 ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
73b64d67aa8f4c9999b15eb244142916 #复制粘贴即可
2、安装插件,这个方法哪一个都行,第一个是安装Jenkins社区中默认的插件,第二个是自己选择安装那些插件
但是两个的安装速度都是非常慢的,所以我这里直接将我们准备的离线插件,copy到/var/lib/jenkins/plugins/目录下,然后重启Jenkins服务即可
Jenkins离线插件包,网盘连接:链接: https://pan.baidu.com/s/1OUlyKG8Po8VzPxZivjDR9g 提取码: wmsq 。
如下操作:
tar xzvf jenkins.tar.gz -C /var/lib/jenkins/plugins/
ll /var/lib/jenkins/plugins/ #查看插件是否copy到plugins目录中
systemctl restart jenkins
然后在点击"安装推荐的插件"就会检查插件,之后会自动跳过安装插件这一项。
3、设置Jenkins用户
4、设置Jenkins URL
然后点击"使用Jenkins",就会进入到Jenkins的Web界面。
会发现还是中文的。
点击"系统管理—>插件管理"来查看插件是否安装成功,选择"已安装",里面只要由一大堆插件就说明安装成功。
5、创建Jenkins用户
点击"系统管理—>找到"安全",点击’管理用户’",之后点击"新建用户":
6、回到Jenkins的主页面,在右上角点击"注销",然后用"aaa"用户进行登陆,能登陆即可。
至此使用传统命令行的方式安装Jenkins完成,这里只是实现了最基本的用法,更复杂的用法,下篇说明。
但最好的学习方法就是,参考文档。
采用Docker的方法安装Jenkins
1、配置Docker的Yum源,(这里不在配置,主要方法:使用阿里云的Docker源)安装Docker,
安装Docker:
yum install -y docker-ce
systemctl restart docker
systemctl enable docker
systemctl status docker
Docker版本:
[root@node3 ~]# docker --version
Docker version 20.10.13, build a224086
拉取Jenkins镜像
这里建议使用的Docker镜像是:jenkinsci/blueocean image
(来自 the Docker Hub repository)。 该镜像包含当前的长期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
1、拉取镜像(最新版本)
docker pull jenkinsci/blueocean
2、运行镜像
docker run \
-u root \ #以root用户运行容器
--rm \ #(可选)关闭时自动删除Docker容器
-d \ #(可选)在后台运行容器,即“分离”模式)并输出容器ID。如果您不指定此选项,则在终端窗口中输出正在运行的此容器的Docker日志。
-p 8080:8080 \ #端口映射,前面代表宿主机的端口,后面的代表Docker的端口,一般前面的可以随意修改
-p 50000:50000 \ #(可选)将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000。
-v /root/jenkins_data:/var/jenkins_home \ #(可选,但是强烈建议输入此条命令)通过Docker创建的卷,关联到Jenkins的工作目录,我们可以直接在宿主机上查看Jenkins的工作目录信息。
-v /var/run/docker.sock:/var/run/docker.sock \ #(可选)/var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。
jenkinsci/blueocean #Jnekins镜像名称。
3、浏览器访问Jenkins并配置,下面的步骤就和上面使用传统命令安装的一样了。(插件直接通过)/root/jenkins_data目录进行copy.
K8S安装部署Jenkins
稍后说明…