Docker 下 Jenkins 持续集成环境搭建实践

阅读时长 8 分钟读完

在前端开发中,持续集成是非常重要的一环。它可以让我们在一些代码更改后及时预知可能引入的问题,避免出现不必要的 Bug,提高开发效率和代码质量。而 Docker 是一个轻量级容器技术,能够让我们更加方便地管理应用程序和其依赖关系。本篇文章将介绍 Docker 下 Jenkins 的搭建方法,以及如何在其中实现前端自动化集成和部署的流程。

前期准备

在开始之前,我们需要先安装好 Docker 和 Docker Compose。这里我使用的操作系统是 Ubuntu 18.04,以下是安装命令:

搭建 Jenkins

接下来,我们需要搭建 Jenkins 服务器。在 Docker 中,我们可以利用官方提供的 Jenkins 镜像来启动一个新的容器。在此之前,我们需要先创建一个 Dockerfile 文件,内容如下:

-- -------------------- ---- -------
---- -------------------
---- ----

- -- ------
--- --- ------- -- ------------------- --------------- ---- ----------- --------------------------
--- ---- ----- -------------------------------------------- - ------- --- -
--- ------------------ ---- ------------ ---------------------------------------- ------------- ---- -------
--- --- ------
--- --- ------- -- --------- ------------- -------------
--- ------- -- -- ------ -------

- -- ------- - ----
--- ---- --- ------------------------------------- - ---- -
--- --- ------- -- ------
--- --- ------- -- ----

---- -------
展开代码

这个 Dockerfile 包含了 Jenkins 镜像所需的组件,如 Docker、Node.js 和 Yarn 等。可以看到,我们将 Jenkins 用户添加到 Docker 用户组中,这样 Jenkins 就可以使用 Docker 了。在此之后,我们可以通过以下命令构建 Docker 镜像:

完成镜像构建后,可以通过以下命令启动一个新的 Jenkins 容器:

这里我将 Jenkins 容器的管理端口映射到了宿主机的 18080 端口。另外,我们也将容器中的 /var/jenkins_home 目录挂载到了宿主机上,以保存 Jenkins 配置和数据。最后,我们也将 Docker 守护进程的 Socket 文件挂载到 Jenkins 容器内,以让 Jenkins 能够与 Docker 通信。

安装必要插件

在我们的 Jenkins 实例中,需要安装一些必要的插件才能完成前端项目的构建和部署。这里列出了一些常用的插件:

  • NodeJS Plugin:安装特定版本的 Node.js
  • Git Plugin:支持从 Git 仓库中拉取代码
  • GitHub Plugin:支持从 GitHub 仓库中拉取代码
  • HTML Publisher Plugin:用于展示构建中的 HTML 报告
  • SSH Plugin:支持使用 SSH 协议部署应用程序

在 Jenkins 中,可以通过“插件管理”菜单安装这些插件。在安装完成后,需要重启 Jenkins 服务才能使插件生效。

创建 Pipeline

在 Jenkins 中,Pipeline 是一种可扩展且持续交付的方法,它可以为每个分支或拉取请求(PR)自动构建和部署代码。通过 Pipeline,我们可以以可控且可重复的方式在多个环境中部署应用程序。

首先,我们需要创建一个 Jenkinsfile 文件。这个文件定义了 Jenkins Pipeline 的结构和流程,可以存储在代码仓库中,以便与代码一起维护。以下是一个基础的 Jenkinsfile 示例:

-- -------------------- ---- -------
-------- -
  ----- - ----- -------- -
  ------ -
    ----------------- -
      ----- -
        --- ------- --------- ---- ----------------------------------
      -
    -

    -------------- -
      ----- -
        -- ----- --------
        -- ----- ------
      -
    -

    ---------------- -
      ----- -
        ------------------- -
          ------------- ------
          ---------------------- -----
          -------- -----
          ---------- -------
          ------------ -------------
        --
      -
    -

    --------------- -
      ---- - ------ -------- -
      ----- -
        ------------------------ -
          ---------------------------- ------------ --------- --- 
          ----------- -
            ------------
              ------------ ------
              --------- ---
              ------------ --- -------- -- -- ----- -------
              -------- ------
              -------------- ------
              ------------------ ------
              ----------------- --- ----
              ---------------- -----------------
              ------------------- ------
              ------------ ------------
              ------------- ---
              ------------ ---
              ------- ------
              -------- -----
            -
          -- 
          -------------- -
            --------------- -------------------------------- ------------------------ ---------------- --- ------------------- --- ----------------- --------
            ----------- --------------------
              --------- ------
              ------------------ ------
              --------------- -------------
            --
          --
        --
      -
    -
  -
-
展开代码

在这个例子中,我们定义了四个阶段:

  • Checkout:从 Git 仓库中拉取代码
  • Build:安装依赖并构建项目
  • Publish:展示构建的 HTML 报告
  • Deploy:使用 SSH 协议部署项目

接下来,我们需要在 Jenkins 中创建一个 Pipeline 项目。可以在 Jenkins 主页点击“新建”按钮,在选择页面中选择“Multibranch Pipeline”项目类型。在项目配置页面中选择“Git”为分支源,并填写代码仓库的 URL。在分支过滤器中输入“master”,以只对 master 分支进行构建。最后,将 Jenkinsfile 文件提交到代码仓库中即可。

结语

在本文中,我们介绍了如何在 Docker 下搭建 Jenkins 持续集成环境,并利用 Jenkinsfile 实现了前端自动化集成和部署的流程。这个流程基于 Pipeline,可以与现有的代码仓库和版本控制工具集成,方便地进行持续交付。同时,Docker 容器提供了可隔离的环境,可以避免应用程序依赖关系的问题,同时在不同的环境中构建和部署应用程序也更加方便。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67bc09b8a231b2b7edd5d025

纠错
反馈

纠错反馈