Jenkins安装与配置、构建作业、流水线、构建、测试和部署:Debian系统环境下的CI/CD自动化实现
Jenkins 是一个功能强大的开源自动化服务器,用于实现持续集成(CI)和持续交付(CD)。在现代软件开发流程中,Jenkins 能帮助团队自动构建、测试和部署应用程序,实现更高效的开发和运维。本文将详细介绍如何在 Debian 系统上安装和配置 Jenkins,并通过 Jenkins 管理构建作业、流水线、自动化构建、测试和部署流程,帮助专业开发者实现 CI/CD 自动化。
一、Jenkins 安装与配置
1.1 系统要求
在开始之前,确保你使用的是 Debian 10 或以上 版本,并已安装 Java 11 或以上版本。Jenkins 是基于 Java 的应用程序,因此必须安装 Java 环境。
安装 Java
sudo apt update
sudo apt install openjdk-11-jdk
安装完 Java 后,验证安装是否成功:
java -version
输出应类似于:
openjdk version "11.0.11" 2021-04-20
1.2 Jenkins 安装
Jenkins 官方提供了用于 Debian 系统的包管理工具支持。以下是安装步骤:
- 添加 Jenkins 官方仓库密钥:
curl -fsSL https://pkg.jenkins.io/debian/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
- 添加 Jenkins 仓库源到系统:
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
- 更新系统包缓存并安装 Jenkins:
sudo apt update
sudo apt install jenkins
- 启动 Jenkins 服务:
sudo systemctl start jenkins
- 设置开机自动启动 Jenkins:
sudo systemctl enable jenkins
1.3 Jenkins 初始设置
Jenkins 安装完成后,你可以通过 Web 界面访问 Jenkins:
在浏览器中输入 http://<your-server-ip>:8080
。
首次访问 Jenkins 时,会要求输入一个初始管理员密码。可以通过以下命令找到该密码:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
复制并粘贴密码到 Web 页面,随后你将看到 Jenkins 的设置向导。你可以选择安装推荐的插件或自定义安装插件。
最后,创建一个管理员用户完成初始配置。
二、构建作业与流水线
在 Jenkins 中,构建作业(Job) 是自动化任务的基本单位。Jenkins 提供了两种方式创建作业:传统的自由风格作业 和 流水线(Pipeline) 作业。流水线允许你定义更复杂的自动化流程,包括代码构建、测试、部署等阶段。
2.1 创建自由风格作业
- 登录 Jenkins 后,点击左侧菜单的 “新建项目”。
- 输入项目名称并选择 “自由风格项目”。
- 在“源码管理”部分,可以选择 Git 或其他版本控制工具,并配置相应的代码仓库地址。
git@github.com:user/repo.git
- 配置 “构建触发器”。可以选择 定时构建 或 基于 SCM 变更触发构建。
例如,使用 cron 表达式设定定时构建:
H/15 * * * *
这将每 15 分钟触发一次构建。
- 在“构建”部分,选择需要执行的构建命令。例如,如果是基于 Maven 构建的 Java 项目,选择 Invoke top-level Maven targets 并指定构建目标。
clean install
- 保存并应用。
点击 “立即构建” 即可手动触发构建,查看 Jenkins 控制台输出了解构建过程。
2.2 创建 Jenkins 流水线作业
流水线作业允许你通过代码定义构建、测试和部署过程,常用的文件是 Jenkinsfile。Jenkinsfile 使用 Groovy 语言编写,具备高度灵活性。
步骤:
创建一个新的流水线项目:
- 点击左侧的 “新建项目”。
- 输入项目名称,选择 “流水线” 类型。
- 在 “流水线” 部分,可以选择定义在 SCM(如 Git)中的 Jenkinsfile,或者直接在 Jenkins 中配置流水线脚本。
示例 Jenkinsfile:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/user/repo.git'
}
}
stage('Build') {
steps {
sh './mvnw clean install'
}
}
stage('Test') {
steps {
sh './mvnw test'
}
}
stage('Deploy') {
steps {
sh './deploy.sh'
}
}
}
post {
success {
echo 'The build and deploy process was successful!'
}
failure {
echo 'Something went wrong.'
}
}
}
此脚本定义了 4 个阶段:Checkout
、Build
、Test
和 Deploy
。每个阶段代表流水线中的一个步骤,可以根据需求进一步扩展。
三、自动化测试与部署
3.1 集成测试工具
Jenkins 可以轻松集成各种测试工具,如 JUnit、Selenium 等,自动化执行测试并在构建页面上展示测试结果。
添加 JUnit 测试步骤:
在上面的 Jenkinsfile 示例中,mvnw test
会自动执行测试。为了在 Jenkins 中展示 JUnit 测试结果,你需要配置 Publish JUnit test result report:
- 在流水线作业的配置页面,找到 “后置操作”。
- 选择 “Publish JUnit test result report”,并指定测试结果文件路径:
**/target/surefire-reports/*.xml
构建结束后,Jenkins 会自动收集并展示测试结果。
3.2 自动化部署
Jenkins 可以将构建产物部署到各种环境中。常见的部署目标包括:
- 部署到 Web 服务器(如 Tomcat、Apache)。
- 部署到容器平台(如 Docker、Kubernetes)。
示例:部署到远程服务器
通过 Jenkinsfile 中的 ssh
步骤,你可以将构建的应用程序部署到远程服务器。例如,使用 SSH 插件:
stage('Deploy to Server') {
steps {
sshagent(['my-ssh-credentials-id']) {
sh '''
scp target/myapp.jar user@remote-server:/path/to/deploy/
ssh user@remote-server "bash /path/to/deploy/deploy.sh"
'''
}
}
}
该脚本通过 SSH 将构建产物 myapp.jar
复制到远程服务器,并执行部署脚本 deploy.sh
。
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/jenkins-debian.html
转载时须注明出处及本声明