一、Jenkins 简介
Jenkins是一个流行的开源自动化服务器,用于持续集成和持续交付(CI/CD)。Jenkins的核心功能主要包括以下几点:
- 持续集成:Jenkins可以监控版本控制系统(如Git、SVN)中的代码变更,并自动执行构建和测试,确保每次提交都被验证,从而尽早发现潜在的集成错误。
- 持续部署:当代码通过测试后,Jenkins可以自动将其部署到不同的环境中,包括测试、预生产或生产环境。
- 任务调度:Jenkins能够定时执行任务,比如夜间构建或定期发布。
- 工作流管理:Jenkins支持Pipeline,它可以定义一系列的任务(构建、测试、部署等),形成一个完整的流程。
- 插件扩展:Jenkins拥有强大的插件生态系统,可以通过安装插件来扩展其功能,支持与各种版本控制系统、构建工具、测试框架等的无缝集成。
- 分布式构建:Jenkins支持分布式构建,可以将构建任务分发到多个构建代理上并行执行,这对于大型项目和复杂系统的构建和部署过程至关重要,能够显著提高任务执行的速度,进而提高整体开发效率。
二、安装前准备
- 需要先在服务器上安装好JDK、Git以及Maven。
- 由于Jenkins拉取代码时,需要对maven仓库有读写权限,所以的先给maven仓进行授权。
bash
chomd 777 /usr/local/src/maven/repo/
三、开始安装
3.1 拉取Jenkins镜像
命令:docker pull jenkins/jenkins:lts
3.2 创建挂载目录
为了方便后期Jenkins中配置文件的修改,以及防止Jenkins中重要文件因为容器损毁或删除导致文件丢失,需要在宿主机上创建一个jenkins_home
目录挂载到容器中的/var/jenkins_home
目录上。通过挂载的方式可以保证容器的数据在容器停止或删除后依然保留在宿主机上。
bash
## 宿主机上创建挂载目录
mkdir -p /usr/local/src/jenkins_home
## 授权挂载目录的读写权限
chmod 777 /usr/local/src/jenkins_home
3.3 启动容器
bash
docker run \
-d \
--name jenkins \
--restart=always \
-p 9100:8080 \
-p 50000:50000 \
-v /usr/local/src/jenkins_home/:/var/jenkins_home \
-v /usr/local/src/java/jdk1.8/jdk1.8.0_391/:/usr/local/src/java/ \
-v /usr/local/src/maven/apache-maven-3.9.6/:/usr/local/src/maven/ \
-v /usr/local/src/git/:/usr/local/src/git/ \
-v /etc/localtime:/etc/localtime:ro \
-u 0 \
jenkins/jenkins:lts
-d
:在后台运行容器。--name
:设置容器的名称。- --restart:设置容器启动之后自动重启,默认no,always表示启动容器后重启。
- -p 9100:8080:容器的8080端口映射宿主机9100端口(程序访问端口)。
- -p 5000:50000:容器的50000端口映射宿主机50000端口(代理端口)。
-v /usr/local/src/jenkins_home/:/var/jenkins_home
:将宿主机的jenkin工作空间目录挂载到容器中。-v /usr/local/src/java/jdk1.8/jdk1.8.0_391/:/usr/local/src/java/
:将宿主机的JDK目录挂载到容器中。-v /usr/local/src/maven/apache-maven-3.9.6/:/usr/local/src/maven/
:将宿主机的Maven目录挂载到容器中。-v /usr/local/src/git/:/usr/local/src/git/
:将宿主机的git目录挂载到容器中。-v /etc/localtime:/etc/localtime:ro
:设置容器时间与宿主机时间一致。-u 0
:使用root账号覆盖容器中内置的账号,0
表示root账号的id。
3.4 登录Jenkins页面
(1)首次通过在浏览器中输入http://宿主机ip:9100/
进入Jenkins页面。首次进入需要从远程服务器下载大量的插件和更新信息,这个过程可能会受到网络速度和稳定性的影响,尤其是Jenkins默认使用国外的镜像源,下载往往很慢。这时可以通过修改宿主机的挂载目录jenkins_home中的hudson.model.UpdateCenter.xml
文件,将其默认的url更换成国内的镜像地址,修改完后重启容器。
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
插件信息更新完成之后会跳出提示输入管理员密码的页面。
(2)通过到宿主机的挂载目录下的secrets
中的initialAdminPassword文件中获取密码。
cat /usr/local/src/jenkins_home/secrets/initialAdminPassword
(3)将获取到的密码输入到页面,点击继续进入到后续的设置。
(4)插件安装
新手推荐选择安装推荐的插件,也可以选择自己需要的插件来安装,看个人需求。可能有些插件会安装失败,这里不影响Jenkins安装先不管,继续往后面操作,后续安装完成后再到Jenkins使用页面进行插件的安装。
(5)创建第一个管理员用户
输入管理员用的账号密码以及邮箱信息,然后点击右下角的使用admin账户继续。
(6)实例配置
实例配置页面默认会带出Jenkins URL地址,也不需要改,直接点击保存并完成。
(7)开始使用
到这步就已经安装完成了,点击开始使用Jenkins。
(8)修改密码
点击开始使用,进入到Jenkins使用页面中,点击右上角的admin选择设置,在设置页面中找到密码,重新修改新的密码。虽然我们在前面创建admin账号的时候设置了密码,但是好像并不会生效一样,当你重新退出再登录的时候,你用创建账号时的密码登录不进,还是的用initialAdminPassword
文件中的密码才能登录进来,所以这里修改下密码,后续就可以用修改后的密码登录了。
四、插件管理
进入到Jenkins使用页面后,点击左边菜单栏的Manage Jenkins,会在右边提示刚刚安装是未成功的插件错误信息,也可以在这里搜索想要安装的插件进行安装。
五、解决插件安装失败问题
插件安装失败一般可通过升级Jenkins到最新版本来解决问题,下面来指定升级对应的版本。
(1)首先根据我们使用的镜像源,也就是刚开始安装时我们替换成的清华镜像源的地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/
中找到对应的版本中的update-center.json
文件。
(2)然后到Jenkins安装服务器上,全局查找default.json
这个文件。
find / -name default.json
(3)进入这个文件所在目录,先备份该文件,以便后面回滚。
cp default.json default.json.bak
(4)在同目录下载刚刚在清华镜像源地址中找到的update-center.json
文件,并修改文件名为default.json。
bash
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/dynamic-2.444/update-center.json
mv update-center.json default.json
(5)重启Jenkins,再次登录进去就线上插件都安装成功了。