在前端开发中,持续集成是非常重要的一环。它可以让我们在一些代码更改后及时预知可能引入的问题,避免出现不必要的 Bug,提高开发效率和代码质量。而 Docker 是一个轻量级容器技术,能够让我们更加方便地管理应用程序和其依赖关系。本篇文章将介绍 Docker 下 Jenkins 的搭建方法,以及如何在其中实现前端自动化集成和部署的流程。
前期准备
在开始之前,我们需要先安装好 Docker 和 Docker Compose。这里我使用的操作系统是 Ubuntu 18.04,以下是安装命令:
sudo apt-get install docker.io sudo systemctl start docker sudo systemctl enable docker sudo apt install docker-compose
搭建 Jenkins
接下来,我们需要搭建 Jenkins 服务器。在 Docker 中,我们可以利用官方提供的 Jenkins 镜像来启动一个新的容器。在此之前,我们需要先创建一个 Dockerfile 文件,内容如下:
-- -------------------- ---- ------- ---- ------------------- ---- ---- - -- ------ --- --- ------- -- ------------------- --------------- ---- ----------- -------------------------- --- ---- ----- -------------------------------------------- - ------- --- - --- ------------------ ---- ------------ ---------------------------------------- ------------- ---- ------- --- --- ------ --- --- ------- -- --------- ------------- ------------- --- ------- -- -- ------ ------- - -- ------- - ---- --- ---- --- ------------------------------------- - ---- - --- --- ------- -- ------ --- --- ------- -- ---- ---- -------展开代码
这个 Dockerfile 包含了 Jenkins 镜像所需的组件,如 Docker、Node.js 和 Yarn 等。可以看到,我们将 Jenkins 用户添加到 Docker 用户组中,这样 Jenkins 就可以使用 Docker 了。在此之后,我们可以通过以下命令构建 Docker 镜像:
docker build . -t jenkins
完成镜像构建后,可以通过以下命令启动一个新的 Jenkins 容器:
docker run -d -p 18080:8080 -p 50000:50000 --name jenkins --restart always -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock 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