使用 Jenkins 实现持续集成与部署

JenkinsJenkinsBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你使用广受欢迎的开源工具 Jenkins 来实现持续集成(CI)和持续部署(CD)。你将学习如何设置 Jenkins 进行 CI,并自动化部署过程,以确保可靠且高效的软件交付。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL jenkins(("Jenkins")) -.-> jenkins/InstallingJenkinsGroup(["Installing Jenkins"]) jenkins(("Jenkins")) -.-> jenkins/UsingJenkinsGroup(["Using Jenkins"]) jenkins(("Jenkins")) -.-> jenkins/PipelineGroup(["Pipeline"]) jenkins(("Jenkins")) -.-> jenkins/BlueOceanGroup(["Blue Ocean"]) jenkins/InstallingJenkinsGroup -.-> jenkins/initial_settings("Jenkins Initial Settings") jenkins/InstallingJenkinsGroup -.-> jenkins/docker_installation("Use Docker Installation") jenkins/InstallingJenkinsGroup -.-> jenkins/war_files_installation("Use War files installation") jenkins/UsingJenkinsGroup -.-> jenkins/create_project("Create Project") jenkins/PipelineGroup -.-> jenkins/pipeline("Pipeline") jenkins/PipelineGroup -.-> jenkins/running_pipelines("Running Pipelines") jenkins/BlueOceanGroup -.-> jenkins/creating_a_pipeline("Creating a Pipeline") subgraph Lab Skills jenkins/initial_settings -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} jenkins/docker_installation -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} jenkins/war_files_installation -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} jenkins/create_project -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} jenkins/pipeline -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} jenkins/running_pipelines -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} jenkins/creating_a_pipeline -.-> lab-411499{{"使用 Jenkins 实现持续集成与部署"}} end

理解持续集成与 Jenkins

什么是持续集成(CI)?

持续集成(CI)是一种软件开发实践,开发人员会定期将其代码更改合并到中央存储库,之后运行自动化构建和测试。CI 的主要目标是对代码库的完整性提供快速反馈,并在开发过程的早期检测问题。

在 CI 工作流程中,开发人员每天多次将其代码更改提交到版本控制系统(例如 Git)。每次提交都会触发一个自动化构建过程,该过程会编译代码、运行单元测试和集成测试,并检查代码质量。这使团队能够快速识别并修复问题,降低集成问题的风险,并确保代码库保持在健康、可部署的状态。

什么是 Jenkins?

Jenkins 是一个开源的持续集成(CI)和持续部署(CD)工具,可帮助自动化软件开发过程。它在软件行业中被广泛用于构建、测试和部署应用程序。

Jenkins 提供了一个集中式平台,用于管理从源代码管理到部署的整个软件交付管道。它支持广泛的插件和集成,使团队能够根据其特定需求自定义 CI/CD 工作流程。

使用 Jenkins 进行 CI/CD 的好处

  1. 自动化:Jenkins 可自动化构建、测试和部署过程,减少人工工作量和人为错误的可能性。
  2. 早期问题检测:Jenkins 运行自动化测试并检查代码质量,有助于在开发周期的早期识别并修复问题。
  3. 改进协作:Jenkins 为整个开发团队提供了一个集中式平台,以便在 CI/CD 过程中进行协作。
  4. 可扩展性:Jenkins 可以处理大规模项目,并支持多个并发构建和部署。
  5. 灵活性:Jenkins 具有高度可定制性,可以与软件开发生命周期中使用的各种工具和技术集成。

持续集成与持续部署

虽然持续集成(CI)和持续部署(CD)是相关概念,但它们并不相同。

持续集成(CI) 是定期将代码更改合并到中央存储库并运行自动化构建和测试以确保代码库完整性的实践。CI 有助于在开发过程的早期检测和修复集成问题。

持续部署(CD) 则是将成功构建和测试的代码自动部署到生产环境的过程。CD 通过将更改自动发布给用户,将 CI 过程更进一步。

在典型的 CI/CD 工作流程中,先进行 CI 过程,然后是 CD 过程,其中成功构建和测试的代码会自动部署到生产环境。

graph LR A[Developer Commits Code] --> B[CI: Automated Build & Test] B --> C[CD: Automated Deployment] C --> D[Production Environment]

为持续集成设置 Jenkins

在 Ubuntu 22.04 上安装 Jenkins

  1. 更新软件包索引:
sudo apt update
  1. 安装必要的依赖项:
sudo apt install -y openjdk-11-jdk
  1. 下载并安装 Jenkins:
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install -y jenkins
  1. 启动 Jenkins 服务:
sudo systemctl start jenkins
  1. 通过 http://localhost:8080 访问 Jenkins 网页界面。

配置 Jenkins

  1. 解锁 Jenkins:
    • 从控制台输出或 /var/lib/jenkins/secrets/initialAdminPassword 文件中复制初始管理员密码。
    • 将密码粘贴到“管理员密码”字段中,然后点击“继续”。
  2. 自定义 Jenkins:
    • 选择“安装建议的插件”以开始使用最流行的插件。
    • 创建第一个管理员用户或继续以初始管理员用户身份使用。
  3. 开始使用 Jenkins:
    • 现在你应该能够通过 http://localhost:8080 访问 Jenkins 仪表板。

将 Jenkins 与版本控制系统集成

Jenkins 支持与各种版本控制系统集成,包括 Git、Subversion 和 Mercurial。要将 Jenkins 与 Git 集成,请执行以下步骤:

  1. 在 Jenkins 中安装“Git 插件”:
    • 转到“管理 Jenkins”>“管理插件”>“可用”选项卡。
    • 搜索“Git 插件”并安装它。
  2. 配置 Git 插件:
    • 转到“管理 Jenkins”>“全局工具配置”。
    • 在“Git”部分下,配置系统上 Git 可执行文件的路径。
  3. 创建一个新的 Jenkins 任务:
    • 在 Jenkins 仪表板上点击“新建项目”。
    • 为你的任务输入一个名称,选择“自由风格项目”,然后点击“确定”。
    • 在任务配置中,在“源代码管理”部分下,选择“Git”并提供存储库 URL。
graph LR A[Developer Commits Code] --> B[Jenkins CI: Automated Build & Test] B --> C[Successful Build] C --> D[Artifact Repository]

使用 Jenkins 自动化持续部署

为持续部署配置 Jenkins

  1. 安装必要的插件:
    • 转到“管理 Jenkins”>“管理插件”>“可用”选项卡。
    • 搜索并安装“部署到容器”插件。
  2. 配置部署目标:
    • 转到“管理 Jenkins”>“配置系统”。
    • 在“云”部分下,为你的部署目标(例如,AWS、Azure 或本地服务器)添加新的云配置。
    • 提供部署目标所需的凭证和连接详细信息。
  3. 创建一个新的用于部署的 Jenkins 任务:
    • 在 Jenkins 仪表板上点击“新建项目”。
    • 为你的部署任务输入一个名称,选择“自由风格项目”,然后点击“确定”。
    • 在任务配置中,在“构建后操作”部分下,添加“部署到容器”步骤并配置部署目标和其他设置。

触发持续部署

  1. 将部署任务与 CI 任务集成:
    • 转到你的 CI 任务配置。
    • 在“构建后操作”部分下,添加一个“构建其他项目”步骤并选择部署任务。
  2. 自动触发部署任务:
    • 在部署任务配置中,在“触发器”部分下,启用“在其他项目构建后构建”选项并选择 CI 任务。
graph LR A[Developer Commits Code] --> B[Jenkins CI: Automated Build & Test] B --> C[Successful Build] C --> D[Jenkins CD: Automated Deployment] D --> E[Production Environment]

监控和排查部署问题

  1. 监控部署状态:
    • Jenkins 仪表板将显示你的部署任务的状态。
    • 你还可以配置电子邮件通知或 webhook 以接收有关部署状态的更新。
  2. 排查部署问题:
    • 检查构建日志中是否有任何错误消息或警告。
    • 调查部署目标环境中可能导致部署失败的任何问题。
    • 使用 LabEx 平台的故障排除工具和资源来帮助识别和解决部署问题。

通过使用 Jenkins 自动化部署过程,你可以确保你的应用程序始终如一地可靠地部署到生产环境,降低人为错误的风险并提高软件交付管道的整体效率。

总结

在本教程结束时,你将对如何利用 Jenkins 进行 CI/CD(持续集成/持续部署)、自动化整个软件开发生命周期有扎实的理解。你将能够设置 Jenkins、配置你的 CI/CD 管道,并自信地无缝部署你的应用程序。