Jenkins安装部署与配置
前言
Jenkins 是一个开源的自动化服务器,用于持续集成和持续交付/持续部署 (CI/CD)。它支持自动构建、测试和部署软件项目,帮助开发团队快速检测和解决问题,提高开发效率和软件质量。
Jenkins 的主要功能
- 持续集成 (CI):
- 自动化构建和测试代码。
- 及时发现和修复代码问题,减少集成风险。
- 持续交付/持续部署 (CD):
- 自动将构建好的应用程序部署到测试环境或生产环境。
- 确保软件可以随时发布,缩短发布周期。
- 插件支持:
- Jenkins 有丰富的插件生态系统,可以集成各种工具和平台,如 Git, Maven, Docker, Kubernetes 等。
- 插件使 Jenkins 可以扩展其功能,以适应不同的需求。
- 分布式构建:
- 支持分布式构建,可以通过多台机器来分担构建任务,提高构建速度和效率。
- 可视化:
- 提供友好的用户界面,可以直观地查看构建状态、测试结果和部署情况。
- 支持创建和管理各种类型的作业和流水线。
Jenkins 的工作流程
- 代码提交:
- 开发人员将代码提交到版本控制系统(如 Git)。
- 触发构建:
- Jenkins 监控版本控制系统的变化,当检测到代码提交时,会自动触发构建。
- 构建和测试:
- Jenkins 根据配置的构建脚本,编译代码并运行自动化测试。
- 生成构建结果:
- Jenkins 将构建结果(成功或失败)报告给开发人员,并生成构建工件(如可执行文件、Docker 镜像等)。
- 部署:
- Jenkins 可以自动将构建好的工件部署到测试环境或生产环境。
一. 环境准备
IP:10.1.15.131
IP:10.1.15.132
二. 安装JDK
# 创建目录 mkdir /usr/local/java/ # 解压文件到目录 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/java/ # 设置环境变量 vim /etc/profile # 在末尾添加 export JAVA_HOME=/usr/local/java/jdk-17.0.5 export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH # 使环境变量生效 source /etc/profile # 添加软链接 ln -s /usr/local/java/jdk-17.0.5/bin/java /usr/bin/java
检查 Java 版本:
三. 安装Jenkins
3.1 官方下载安装包
https://mirrors.jenkins-ci.org/redhat/
# 离线安装
rpm -ivh jenkins-2.401.3-1.1.noarch.rpm
# 启动
systemctl daemon-reload
systemctl start jenkins
# 设置开机启动
systemctl enable jenkins
3.2 Jenkins服务配置
# 查看jenkins服务状态
systemctl status jenkins
# 修改用户和组为root;修改启动端口号。
vim /usr/lib/systemd/system/jenkins.service
# 修改目录权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
# 重启jenkins服务
systemctl restart jenkins
3.3 访问Jenkins管理网站
出现这个界面说明安装成功,查看Jenkins密码进行下一步。
点击安装推荐插件,下一步。
# 创建第一个管理员用户
# 配置Jenkins管理网站地址
# 完成基础配置
# Jenkins 管理界面
3.4 Jenkins 插件安装
# Jenkins实现发布过程,需要关联很多组件,而这些组件都可以通过jenkins插件管理进行下载和配置。
# 系统管理》插件管理
# 修改获取插件地址
http://10.1.15.132/pluginManager/advanced
升级站点的https改为http之后提交
# 重启jenkins,我们可以直接在网站上执行重启命令,无需登录服务器进行重启。
http://10.1.15.132/restart
# 下载汉化插件
# 安装完成后重启jenkins,可以看到系统编程中文界面。
# 根据需要,我们可以安装以下插件:
序号 | 插件名称 | 描述 |
1 | Job Import Plugin | 同步插件 |
2 | Version Number | 版本号插件 |
3 | NodeJS | vue插件 |
4 | GitLab API Plugin | gitlab源代码插件 |
5 | Role-based Authorization Strategy | jenkins权限管理插件 |
6 | MSBuild Plugin | jenkins Shell命令插件 |
7 | SonarQube Scanner | 代码审查插件 |
3.5 Jenkins 组件配置
3.5.1 Maven 安装与配置
配置Maven本地仓库适用于Java代码的发布
# 官网下载地址:
https://maven.apache.org/download.cgi
# 安装
# 创建目录 mkdir -p /usr/local/maven/ # 解压 tar -zvxf apache-maven-3.8.1-bin.tar.gz -C /usr/local/maven/ # 添加环境变量 vi /etc/profile export MAVEN_HOME=/usr/local/maven/apache-maven-3.8.1 export PATH=$MAVEN_HOME/bin:$PATH # 执行生效 source /etc/profile # 查看版本 mvn -v
# 配置本地仓库
# 创建一个本地仓库存储目录
mkdir -p /usr/local/maven/repository
# 修改settings.xml配置文件
vim /usr/local/maven/apache-maven-3.8.1/conf/settings.xml
# Jenkins 配置
系统管理 > 全局工具配置
3.5.2 Jenkins配置Gitlab凭据
# 我们从gitlab生成GitLab API令牌
# Jenkins 配置凭据
3.5.3 Jenkins同步工具配置
使用Job Import Plugin插件,可以很轻松将一个Jenkins发布项目的脚本同步到另外一个Jenkins
3.6 Jenkins任务的创建与发布
# 构建一个自由风格的软件项目
# 保持构建的天数,最大个数
# 构建触发器
# 定时构建语法
五颗星,中间用空格隔开 * * * * * 第一颗*表示分钟,取值0~59 第二颗*表示小时,取值0~23 第三颗*表示一个月的第几天,取值1~31 第四颗*表示第几月,取值1~12 第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日 例子 1.每30分钟构建一次: H/30 * * * * 2.每2个小时构建一次 H H/2 * * * 3.每天早上8点构建一次 0 8 * * * 4.每天的8点,12点,22点,一天构建3次 0 8,12,22 * * * (多个时间点,中间用逗号隔开)
这时候会看到一个提示分散负载应该用 H 10 * * * 而不是 0 10 * * *,这个意思是让我们尽量用H 10 * * *
那么前面的H是什么意思呢?
为了允许定期计划的任务在系统上产生负载,应在可能的情况下使用符号H ( for"哈希") 。
例如对于十几个日常工作,使用 0 0 * * * 将导致午夜的大峰值。 相反,使用H * * * 每天仍然会执行每一次作业,但同时使用有限的资源,更好地使用有限的资源。
所以这里改成H 10 * * *
# 配置Gitlab源代码地址和凭据
# 拉取指定的分支,已经拉取该分支下制定的目录文件夹。
# 配置自动生成版本号变量,用于构建docker镜像使用
# 构建一个vue项目,发布到K8S
# 构建一个.net core项目
# 点击立即构建,我们可以查看控制台输出日志