文章目录
- CI/CD环境搭建流程
- 一、GitLab 安装与配置
- 1. 环境准备
- 2. 安装依赖
- 3. 下载安装GitLab
- 4. 修改配置
- 5. 应用配置并启动
- 6. 初始化设置
- 二、GitLab 项目管理
- 1. 创建群组与项目
- 2. 用户管理
- 3. 上传代码
- 三、Jenkins 安装与配置
- 1. 安装JDK17
- 2. 安装Jenkins
- 3. 修改配置
- 4. 启动服务
- 5. 插件管理
- 6. 初始设置
- 四、Maven 安装与配置
- 1. 安装Maven
- 2. 配置镜像源
- 3. Jenkins全局配置
- 五、Tomcat 安装与配置
- 1. 安装JDK8
- 2. 安装Tomcat
- 3. 配置管理用户
- 4. 允许远程访问
- 六、Jenkins流水线配置
- 1. 创建自由风格项目
- 2. 验证部署
- 常见问题~
- Pipeline 流水线项目构建
- Pipeline
- 安装 Pipeline 插件
- Scripted Pipeline 示例
- 示例脚本:
- Declarative Pipeline 示例
- 示例脚本:
- 使用代码生成器生成流水线脚本
- 示例:
- Git Hook 自动触发构建
- 原理
- 安装插件
- Jenkins 配置
- GitLab 配置 Webhook
- 解决 Webhook 测试报错
- 测试自动触发
- 代码推送触发构建
CI/CD环境搭建流程
一、GitLab 安装与配置
1. 环境准备
systemctl disable --now firewalld
setenforce 0
2. 安装依赖
yum install -y curl policycoreutils-python openssh-server perl postfix
systemctl enable --now sshd postfix
3. 下载安装GitLab
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm
4. 修改配置
vim /etc/gitlab/gitlab.rb
# 修改以下配置
external_url 'http://<IP>:82'
nginx['listen_port'] = 82
5. 应用配置并启动
gitlab-ctl reconfigure
gitlab-ctl restart
6. 初始化设置
- 访问
http://<IP>:82
设置root密码(如:root@123) - 修改语言为中文:用户设置 → Preferences → Localization → 简体中文
二、GitLab 项目管理
1. 创建群组与项目
- 群组:
devops_group
(私有) - 项目:
web_demo
(私有)
2. 用户管理
- 创建用户
zhangsan
,设置密码zhangsan@123
- 将用户添加到组,角色为 Owner
3. 上传代码
git config --global user.name "zhangsan"
git config --global user.email "zhangsan@xy101.com"
git clone http://<GitLab_IP>:82/devops_group/web_demo.git
# 上传代码后提交
git add .
git commit -m "init web_demo"
git push -u origin master
三、Jenkins 安装与配置
1. 安装JDK17
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/
vim /etc/profile
# 添加环境变量
export JAVA_HOME=/usr/local/jdk-17.0.9
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
2. 安装Jenkins
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
yum install jenkins -y
3. 修改配置
vim /usr/lib/systemd/system/jenkins.service
# 修改以下参数
User=root
Group=root
Environment="JAVA_HOME=/usr/local/jdk-17.0.9"
Environment="JENKINS_PORT=8080"
4. 启动服务
systemctl daemon-reload
systemctl start jenkins
systemctl enable jenkins
5. 插件管理
- 替换插件源为清华镜像:
sed -i 's#https://updates.jenkins.io/#https://mirrors.tuna.tsinghua.edu.cn/jenkins/#g' /var/lib/jenkins/hudson.model.UpdateCenter.xml
systemctl restart jenkins
- 安装插件:
Localization: Chinese
,Git
,Deploy to container
6. 初始设置
- 访问
http://<Jenkins_IP>:8080
解锁并创建管理员账户 - 添加GitLab凭据:用户名密码(zhangsan/zhangsan@123)
四、Maven 安装与配置
1. 安装Maven
tar -zxvf apache-maven-3.6.2-bin.tar.gz -C /usr/local/
mv apache-maven-3.6.2 /usr/local/maven
vim /etc/profile
# 添加环境变量
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
source /etc/profile
2. 配置镜像源
mkdir /usr/local/maven/repo
vim /usr/local/maven/conf/settings.xml
# 修改本地仓库路径和阿里云镜像
<localRepository>/usr/local/maven/repo</localRepository>
<mirror>
<id>alimaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
3. Jenkins全局配置
- Manage Jenkins → Global Tool Configuration
- JDK17路径:
/usr/local/jdk-17.0.9
- Maven路径:
/usr/local/maven
- JDK17路径:
- 添加全局环境变量:
JAVA_HOME=/usr/local/jdk1.8.0_391
MAVEN_HOME=/usr/local/maven
五、Tomcat 安装与配置
1. 安装JDK8
tar -zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local/
vim /etc/profile
# 添加环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_391
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
2. 安装Tomcat
tar -zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
3. 配置管理用户
<!-- 修改 /usr/local/tomcat/conf/tomcat-users.xml -->
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
4. 允许远程访问
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<!-- 注释以下内容 -->
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
六、Jenkins流水线配置
1. 创建自由风格项目
- 源码管理:Git仓库地址
http://<GitLab_IP>:82/devops_group/web_demo.git
- 构建步骤:
mvn clean package
- 构建后操作:
- Deploy war/ear to a container
- WAR文件路径:
target/*.war
- Tomcat URL:
http://<Tomcat_IP>:8080
- 凭据:
tomcat/tomcat
2. 验证部署
- 访问
http://<Tomcat_IP>:8080/web_demo
确认应用已部署
常见问题~
-
GitLab 502错误
- 检查内存是否充足(至少4GB)
- 查看日志:
gitlab-ctl tail
-
Jenkins构建失败
- 检查控制台输出,确认Maven依赖是否下载成功
- 验证JDK版本是否与项目兼容
-
Tomcat部署失败
- 确认
manager-script
角色已添加 - 检查Tomcat服务端口(8080)是否开放
- 确认
Pipeline 流水线项目构建
Pipeline
- Pipeline 是 Jenkins 的核心功能,支持通过代码定义构建流程。
- 两种语法:
- Scripted Pipeline:基于 Groovy 的脚本式语法,灵活性高。
- Declarative Pipeline:声明式语法,结构清晰,易于维护。
安装 Pipeline 插件
- 默认已安装
Pipeline
和Pipeline Stage View
插件。 - 如需手动安装:
- Manage Jenkins → Manage Plugins → 可选插件,搜索并安装
Pipeline
和Pipeline Stage View
。
- Manage Jenkins → Manage Plugins → 可选插件,搜索并安装
Scripted Pipeline 示例
示例脚本:
node {
def mvnHome
stage('拉取代码') {
echo '拉取代码'
}
stage('编译构建') {
echo '编译构建'
}
stage('项目部署') {
echo '项目部署'
}
}
说明:
- node:定义运行环境(Master 或 Agent)。
- stage:定义构建阶段(如拉取代码、编译构建、项目部署)。
- steps:每个阶段的具体操作。
Declarative Pipeline 示例
示例脚本:
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
echo '拉取代码'
}
}
stage('编译构建') {
steps {
echo '编译构建'
}
}
stage('项目部署') {
steps {
echo '项目部署'
}
}
}
}
说明:
- pipeline:声明式 Pipeline 的固定语法。
- agent:指定运行环境(
any
表示任意可用节点)。 - stages:包含多个阶段(
stage
)。 - steps:每个阶段的具体操作。
使用代码生成器生成流水线脚本
- 步骤:
- 进入项目配置页面,点击 流水线语法。
- 使用 片段生成器 生成各阶段脚本。
- 拉取代码:
- 选择
checkout: Check out from version control
。 - 配置 Git 仓库地址和凭据。
- 选择
- 编译构建:
- 选择
sh: Shell Script
,输入mvn clean package
。
- 选择
- 项目部署:
- 选择
deploy: Deploy war/ear to a container
,配置 WAR 文件路径和 Tomcat 地址。
- 选择
- 拉取代码:
示例:
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/master']],
userRemoteConfigs: [[url: 'git@192.168.80.10:devops_group/web_demo.git',
credentialsId: 'gitlab-auth-ssh']])
}
}
stage('编译构建') {
steps {
sh 'mvn clean package'
}
}
stage('项目部署') {
steps {
deploy adapters: [tomcat9(credentialsId: 'tomcat-auth', path: '', url: 'http://192.168.80.12:8080')],
war: 'target/*.war'
}
}
}
}
Git Hook 自动触发构建
原理
- GitLab Webhook:当代码推送到 GitLab 仓库时,自动触发 Jenkins 构建。
安装插件
- GitLab 和 Generic Webhook Trigger 插件:
- Manage Jenkins → Manage Plugins → 可选插件,搜索并安装。
Jenkins 配置
- 进入项目配置页面,点击 构建触发器。
- 勾选 Build when a change is pushed to GitLab。
- 复制生成的 Webhook URL(如:
http://192.168.80.11:8080/project/web_demo_pipeline
)。
GitLab 配置 Webhook
- 开启 Webhook 功能:
- 使用 root 账户登录 GitLab。
- 进入 管理中心 → 设置 → 网络。
- 勾选 Allow requests to the local network from web hooks and services。
- 点击 Save changes。
- 添加 Webhook:
- 进入项目 → 设置 → 集成。
- URL:输入 Jenkins 生成的 Webhook URL。
- Trigger:勾选 Push events。
- 点击 Add webhook。
解决 Webhook 测试报错
- 在 Jenkins 中:
- 进入 Manage Jenkins → Configure System → Gitlab。
- 取消勾选 Enable authentication for ‘/project’ end-point。
- 点击 保存。
测试自动触发
- 在 GitLab 中:
- 进入 Webhook 页面,点击 Test → Push events。
- 返回 Hook executed successfully: HTTP 200 表示配置成功。
- 在 Jenkins 中:
- 查看构建记录,确认自动触发构建。
代码推送触发构建
- 修改代码并推送:
cd /root/web_demo vim src/main/webapp/index.jsp git add . git commit -m "更新代码" git push -u origin master
- 推送成功后,Jenkins 会自动触发构建。
通过 Pipeline 流水线 和 Git Hook 自动触发构建,可以实现从代码提交到自动化构建部署的完整流程:
- Pipeline 定义构建流程,支持灵活的阶段划分和操作。
- Git Hook 实现代码推送后自动触发构建,提升开发效率。
- Jenkins + GitLab 集成,构建稳定可靠的 CI/CD 环境。
后续可扩展:
- 添加自动化测试阶段。
- 集成代码质量扫描工具(如 SonarQube)。
- 配置多环境部署(开发、测试、生产)。