jenkins介绍与部署
jenkins介绍与部署
一、Jenkins 基础信息
- Jenkins 简介:Jenkins 是开源 CI&CD 软件,起源于商用的 Hudson,用 Java 编写,可在 Tomcat 等容器运行或独立运行,常与 SVN、Git 等版本控制工具及 Maven、Ant、Gradle 等构建工具结合,用于持续自动构建 / 测试软件项目、监控外部任务
- 相关工具介绍
- SVN:开放源代码的版本控制系统,采用分支管理,支持多人协作开发同一项目,实现资源共享与集中式管理
- Maven:Java 项目构建工具,通过项目对象模型(POM)管理项目构建、报告和文档,缺省构建规则可重用,配置简单
- Ant:自动化工具,能将软件编译、测试、部署等步骤关联,主要用于构建 Java 应用,也可构建 C/C++ 等非 Java 应用
- Gradle:基于 Ant 和 Maven 的项目自动化构建工具,负责项目依赖、打包、部署、发布及渠道差异管理等
- Jenkins 工作原理:从 SVN/Git 拷贝源代码到本地,依据设置的 build 脚本执行任务,build 脚本是整个系统的关键
- Jenkins 特点:具有易安装(仅需 Jenkins.war 文件)、易配置(GUI 界面)、支持代码变更检测、永久链接、集成多种通知工具、生成测试报告、分布式构建、保存文件指纹信息及支持第三方插件等特点
二、CI/CD 概念
- CI(持续集成)
- 简介:开发人员提交新代码后,系统自动构建、进行单元测试,判断新代码与原有代码能否正确集成,可减少代码错误引入
- 工作模式:涉及源代码(SOURCE)、构建(BUILD)、代码仓库(REPOSITORY)、CI 服务器(CI SERVER)、测试(TEST)、代码提交(CHECK-IN)及结果(RESULT)等环节
- 优势:频繁集成将复杂代码逻辑分割,便于定位错误;细致的工作提交利于判断工作进度,方便管理开发流程
- CD(持续交付与持续部署)
- 持续交付:在 CI 基础上,将集成后的代码部署到类生产环境(如 Staging 环境)进行更多测试,无问题可手动部署到生产环境
- 持续部署:是 CI 和持续交付的延伸,能自动将交付的应用部署到生产环境,及时获取用户反馈,降低部署风险,目标是代码随时可部署并自动进入生产环境
三、Jenkins 安装部署(基于 Tomcat 容器)
- 部署 Tomcat
- 卸载 CentOS7 自带 JDK,通过
rpm -qa | grep java
查看,再用rpm -e
命令卸载 - 安装 JDK11,执行
yum -y install java-11-openjdk
- 下载 Tomcat 9.0 版本(10 版本有 bug),解压到
/usr/local/
目录并创建软链接tomcat
,启动 Tomcat 后测试能否访问首页
- 卸载 CentOS7 自带 JDK,通过
- 部署 Jenkins
- 下载 Jenkins.war 文件到
/usr/local/tomcat/webapps/
目录,文件会自动解压 - 重启 Tomcat 服务,通过浏览器访问 Jenkins,查看
/root/.jenkins/secrets/initialAdminPassword
文件获取初始密码登录
- 下载 Jenkins.war 文件到
- 自定义 Jenkins
- 登录后选择插件安装方式,可先选择 “无”,后续按需安装
- 创建管理员用户(如 admin,密码 admin)
- 将 Jenkins 插件源替换为国内源(如华为云、清华大学源),安装简体中文插件及 Git、GitHub、GitLab、Gitee 等插件,安装完成后重启 Jenkins
- 进行全局工具配置,如安装 JDK,还可进行节点管理
具体示例:
已关闭防火墙与selinux
使用tomcat容器安装jenkins
部署tomcat,tomcat下载https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat,此时下载9.0版本的,10版本部署有bug,无法实现。
先要卸载centos7中自带得jdk
[root@server ~]# rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
[root@server ~]# rpm -e java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64 --nodeps
[root@server ~]# rpm -e java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64 --nodeps
[root@server ~]# rpm -qa | grep java
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2018e-3.el7.noarch
javapackages-tools-3.4.1-11.el7.noarch
安装jdk:
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@server yum.repos.d]# rm -rf *
[root@server yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 2523 100 2523 0 0 9051 0 --:--:-- --:--:-- --:--:-- 9075
[root@server yum.repos.d]# yum -y install epel-release
[root@server ~]# yum -y install java-11-openjdk
上传tomcat压缩包解压,并部署安装:
[root@server ~]# rz -E
rz waiting to receive.
[root@server ~]# ls
anaconda-ks.cfg Desktop Downloads Music Public Videos
apache-tomcat-9.0.67.tar.gz Documents initial-setup-ks.cfg Pictures Templates
[root@server ~]# tar -xzf apache-tomcat-9.0.67.tar.gz -C /usr/local
[root@server ~]# cd /usr/local/
[root@server local]# ln -s apache-tomcat-9.0.67/ tomcat
启动tomcat,测试能否访问tomcat首页:
[root@server local]# cd tomcat/
[root@server tomcat]# bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
部署Jenkins
下载jenkins到/usr/local/tomcat/webapps/目录下:(注:这里是上传)
[root@server ~]# cd /usr/local/tomcat/webapps/
[root@server webapps]# rz -E
rz waiting to receive.
上传后会自动解压:
[root@server webapps]# ls
docs examples host-manager jenkins jenkins.war manager ROOT
启动服务:
[root@server tomcat]# bin/catalina.sh stop
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@server tomcat]# bin/catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
浏览器访问Jenkins:
查看上图框出来的文件,该文件中记录这密码,复制密码并登录:
[root@server tomcat]# cat /root/.jenkins/secrets/initialAdminPassword
4010907ccf2245a2a6c8782d8008e297
自定义Jenkins
选择插件来安装:
选择无,进行安装,后期需要哪些插件就安装哪些插件:
创建管理员用户admin,密码为redhat:
此时登录进去是英文界面,我们进行替换国内源:
点击
Advanced —> 更新为国内源 —> Submit
原国外插件源地址:https://updates.jenkins.io/update-center.json
国内插件源地址:https://mirrors.huaweicloud.com/jenkins/updates/update-center.json
安装Git GitHub GitLab Gitee插件
安装完成后,会重启jenkins