DevOps - Jenkins

在本章中,我们将介绍 Jenkins,这是一个开源自动化服务器。它在简化持续集成和交付方面发挥着重要作用。

我们将讨论 Jenkins 架构。我们还将讨论如何设置它、配置作业以及将其与版本控制系统连接起来。最后,我们将解释如何将管道用作代码。这将为我们在 DevOps 实践中使用 Jenkins 提供完整的指南。

了解 Jenkins 架构

Jenkins 是一个强大的自动化服务器,可帮助我们进行持续集成和持续交付,我们称之为 CI/CD。它的设计基于主代理模型。该模型有助于我们提高可扩展性和可靠性。

  • Jenkins Master −这是运行构建过程的主要控制单元。它安排作业、将构建发送给代理并检查其进度。它为我们提供了用于设置和监控的 Web 界面。
  • Jenkins 代理(从属) − 这些是从主服务器执行作业的独立机器。它们可以在不同的系统(如 Windows 或 Linux)上工作。它们允许我们以分布式方式运行构建以加快速度。
  • 作业配置 − 我们将作业定义为 Jenkins 将运行的一系列步骤。我们可以使用用户界面或配置文件来设置它们。
  • 插件 − Jenkins 具有灵活的设计。这意味着我们可以添加许多插件。这些插件帮助我们进行通知、版本控制、构建工具等。

这种设计让我们可以使用 Jenkins 来管理不同环境中复杂的 CI/CD 任务。

设置 Jenkins 环境

我们可以按照这些简单的步骤设置 Jenkins 环境。

以下是先决条件 −

  • Java − 我们需要确保安装了 Java 开发工具包 (JDK)。它应该是 Java 8 或更高版本。
  • 操作系统 −它可以在 Windows、macOS 或 Linux 上运行。

安装步骤

下载 Jenkins − 我们转到 Jenkins 下载页面 并为我们的系统选择正确的软件包。

安装 Jenkins − 对于 Windows,运行安装程序并按照安装向导进行操作即可。对于 Linux,请使用如下软件包管理器 −

sudo apt update
sudo apt install jenkins

对于 macOS −我们可以像这样使用 Homebrew −

brew install jenkins-lts

启动 Jenkins − 在 Linux 上,我们运行此命令 −

sudo systemctl start jenkins

在 Windows 上,我们在服务中查找 Jenkins 并从那里启动它。

访问 Jenkins

我们打开浏览器并转到 http://localhost:8080。我们需要使用初始管理员密码解锁 Jenkins。我们可以通过运行此命令找到它 −

cat /var/lib/jenkins/secrets/initialAdminPassword

配置 Jenkins

按照安装向导操作。它帮助我们安装建议的插件并创建管理员用户。

创建和配置 Jenkins 作业

在 Jenkins 中创建和配置作业对于自动化构建和部署非常重要。Jenkins 可以处理不同类型的作业。这些包括自由式项目、管道项目和多分支管道。

创建 Jenkins 作业的步骤

访问 Jenkins 仪表板 − 在 Web 浏览器中打开 Jenkins。

创建新作业 − 单击仪表板上的"新项目"。输入我们的作业名称。

我们选择作业类型,如自由式项目或管道,然后单击"确定"。

配置作业设置 −

  • 常规 − 我们添加描述。我们还可以选择丢弃旧版本。
  • 源代码管理 − 我们设置了版本控制系统,如 Git。
Repository URL: https://github.com/user/repo.git
Credentials: [Add credentials if needed]
  • 构建触发器 − 我们设置触发器,例如"定期构建"或"轮询 SCM"。
  • 构建环境 −我们配置任何所需的环境设置。
  • 构建步骤 − 我们定义要运行的步骤。例如,我们可以调用 shell 脚本。
# 示例 shell 命令
echo "Building the project..."

构建后操作 − 我们指定构建后要做什么。这可能是发送通知或存档工件。

保存并构建:我们单击"保存"以保留我们的设置。我们可以通过单击作业页面中的"立即构建"来开始构建。

通过这些设置,我们可以制作能够很好地自动化我们流程的 Jenkins 作业。

将 Jenkins 与版本控制系统集成

我们需要将 Jenkins 与版本控制系统 (VCS) 集成以自动化构建过程。 Jenkins 可与许多 VCS 配合使用,如 Git、Subversion (SVN) 和 Mercurial。

将 Jenkins 与 Git 集成的步骤

安装 Git 插件 − 转到"管理 Jenkins",然后转到"管理插件"。安装"Git 插件"。

配置 Jenkins 全局设置 − 单击"管理 Jenkins",然后单击"全局工具配置"。设置 Git 安装路径。

创建新的 Jenkins 作业 − 我们单击"新建项目",选择"自由式项目",然后为其命名。

配置源代码管理 − 在作业设置中,我们选择 Git。我们输入存储库 URL,如 https://github.com/user/repo.git。如果存储库是私有的,我们会添加凭据。

设置构建触发器 − 我们启用 Poll SCM 来检查特定时间的更改,例如 H/5 * * * *。

示例配置

# Jenkins 作业配置
scm:
  git:
    branches:
      - master
    remote:
      url: https://github.com/user/repo.git

通过执行这些步骤,Jenkins 将从我们指定的 VCS 中提取最新的代码更改。这有助于我们进行持续集成。

使用 Jenkins 实现持续集成

持续集成 (CI) 是我们开发软件的一种方式。在这种方法中,我们会自动构建、测试和部署代码更改。这有助于我们保持质量和集成。Jenkins 通过自动执行这些步骤帮助我们进行 CI。

使用 Jenkins 实现 CI 的步骤

创建 Jenkins 作业 − 我们可以选择 Freestyle 或 Pipeline 作业类型。我们需要设置源代码存储库。例如,我们可以使用 Git。

配置构建触发器 − 我们设置触发器来检查 SCM 或使用 webhook。这有助于自动构建。

triggers {
    scm('H/5 * * * *') // 每 5 分钟检查一次 SCM
}

定义构建步骤 − 我们指定构建工具。这可以是 Maven、Gradle 或脚本。

steps {
    sh 'mvn clean package' // 这是针对 Maven 项目的
}

添加构建后操作 − 我们可以设置通知、保存工件或部署构建。

post {
    success {
        archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
    }
}

测试自动化 − 我们可以添加测试框架,如 JUnit 或 Selenium。它们会在构建后自动运行测试。

监控构建 − 我们可以使用 Jenkins 仪表板。这有助于我们查看构建状态和日志。

通过遵循这些步骤,我们可以轻松地在开发工作中使用 Jenkins 实现持续集成。

声明式管道示例

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh 'make'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'make test'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying...'
                sh 'make deploy'
            }
        }
    }
}

通过使用 Pipelines as Code,我们可以使我们的 DevOps 更好地工作并改进我们的部署方式。

结论

在本章中,我们了解了 Jenkins 的基础知识。我们讨论了它的设计、如何设置它、如何配置作业以及如何将其与版本控制系统连接。我们还讨论了如何使用持续集成和 Jenkins Pipeline as Code。