每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。
关于如何使用 Drone CI 进行持续集成的分步说明,以简单的 Node.js 应用程序和 Mocha 作为我们的单元测试框架。
单元测试是任何软件开发生命周期的基本实践,无法避免。在当今的现代云原生空间中,由于有如此多的可用平台和工具,自动化测试部分的需求量很大。这种测试自动化可以通过持续集成过程来完成。持续集成是 DevOps 仙境中必不可少的方法。这个过程可以帮助开发人员测试和构建他们的代码,以确保没有任何问题,并且可以通过审批者的简单批准自信地集成到主分支中。持续集成过程可以通过 Drone CI 无缝自动化,以测试、构建并为您的开发人员提供信心。通过持续集成,开发人员可以在手动测试上节省大量时间,并将宝贵的时间集中在构建客户需要的丰富功能上。今天,我们将了解如何使用 Drone CI 进行持续集成,以一个简单的 Node.js 应用程序和 Mocha 作为我们的单元测试框架。
先决条件
从官网下载并安装 Node.js
Drone CI 设置
安装 Docker 桌面
教程
第 1 步:为您的应用程序文件创建一个文件夹
mkdir myapp
cd myapp
第 2 步:编写一个简单的 Node.js 应用程序
通过运行以下命令来初始化您的项目:
npm init
这将创建一个package.json文件,其中包含您为项目下载的所有依赖项。
第 3 步:安装 Express
注意: Express 是 Node.js Web 应用程序框架
npm install express --save
第 4 步:使用以下代码创建一个名为 app.js 的文件
var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); });
第 5 步:运行应用程序
node app.js
Mocha 单元测试框架
Mocha 测试框架是一个用于测试 JavaScript 代码的 JavaScript 库。它是一个开源框架,为开发人员提供了很大的灵活性。它有一个简单的 API,可用于测试同步和异步代码。它还具有链接、回调、承诺等功能。它还提供了一个用于并行运行测试的 API,从而加快了为大型代码库编写测试的过程。Mocha 测试框架可以使用 npm(节点包管理器)安装。
第 6 步:将测试文件夹添加到您的应用程序目录
注意: 这是我们所有测试所在的地方。
创建一个名为“test”的文件夹,并在其下创建一个文件test.js.
您可以将 Mocha 和 Chai 安装为 Node.js 测试框架的一部分。
npm install --save-dev mocha
package.json在特定项目的文件中添加 Mocha 作为依赖项。
第 7 步:将以下基本 Mocha 字符串测试规范添加到您的 test.js 文件中
var assert = require('assert'); describe('Basic Mocha String Test', function () { it('should return number of charachters in a string', function () { assert.equal("Hello".length, 4); }); it('should return first charachter of the string', function () { assert.equal("Hello".charAt(0), 'H'); }); });
第 8 步:检查您的 package.json 文件
该package.json文件应包含 Mocha 部分,应如下所示:
"scripts": { "test": "mocha" }
第 9 步:使用 Mocha 运行测试
转到您的应用程序目录并运行以下命令:
npm test
我的输出在下面共享:
它失败了,因为 Mocha 运行时似乎出现了一些错误。你可以看到一个失败。
示例项目的源代码在此处共享。
Node.js 应用程序的持续集成
到目前为止,我们在本地测试了 Node.js 应用程序,该应用程序可以通过 CI 服务器实现自动化。Drone CI 是我们首选的 CI 平台,我们已经知道如何在本地运行。它是开源的,易于在几分钟内安装。
每次开发人员将代码推送到应用程序的主分支时,使用像 Drone 这样的 CI 服务器可以帮助公司在教客户之前发现错误并纠正错误和错误。
让我们继续接下来的步骤。
第 10 步:将您的应用程序推送到 GitHub
我们应该确保没有文件或存储库丢失。在我们的 GitHub 存储库中,我们仍然需要添加两个文件:
.drone.yml作为 Drone 配置文件的一部分。通过将.drone.yml文件放在 git 存储库的根目录中来配置管道
Dockerfile 构建和发布 Docker 镜像作为我们构建管道中的一个步骤
添加一个简单的 Dockerfile,因为它包含构建容器的说明。
FROM node:14-alpine ENV NODE_ENV development # Add a work directory WORKDIR /app # Cache and Install dependencies COPY package.json . RUN npm install # Copy app files COPY . . # Expose port EXPOSE 3000 # Start the app CMD [ "node", "app.js" ]
该.drone.yml文件如下所示:
kind: pipeline type: docker name: default platform: os: linux arch: arm64 steps: - name: test image: node commands: - npm install - npm test - name: docker image: plugins/docker settings: # registry: docker.io repo: pavansa/myapp username: from_secret: docker_username password: from_secret: docker_password tags: - pavans
.drone.yml通过在 git 存储库的根目录中放置一个文件来配置管道。YAML 语法旨在易于阅读和表达,以便查看存储库的任何人都可以理解工作流程。
第 11 步:打开无人机仪表板并同步您的新仓库
设置秘密:
同步存储库后,您应该会在下面看到所有存储库并选择我们正在构建的存储库:
接下来,通过添加秘密来激活存储库:
完成上述所有步骤后,单击“NEW BUILD”按钮,开始构建管道:
在这里,您将看到 Drone 通过构建代码并针对我们为应用程序代码指定的测试对其进行测试来发挥它的魔力。
请记住: 我们已经在我们的应用程序中添加了一个简单的 Mocha 测试框架。
如果测试通过,它应该继续将新构建的映像推送到我们的 DockerHub,如我们在.drone.yml步骤中指定的那样。
如果测试失败,应用程序管道不应自行构建和停止。
让我们看看我们的构建发生了什么:
正如预期的那样,管道在没有执行后续步骤的情况下失败了。
您可以返回并更正错误,Drone 会自动运行管道;如果一切正常,它会按预期将新构建推送到 Docker Hub。
当一切都通过后,去检查你在.drone.yml. 它应该把图像推到那里。我们在pavans 中给出的标签,你可以在这里看到。
恭喜!我们已经成功构建了一个简单的 Node.js 应用程序,添加了一个简单的 Mocha 测试,使用 Drone 进行持续集成,并将新镜像推送到 Docker Hub。
无人机桌面
等等,你们中的一些人可能想知道是否有无需在笔记本电脑上设置 Drone CI 即可立即使用的 Drone 扩展。好吧,我们有它给你。您只需要在您的笔记本电脑/计算机上安装 Docker Desktop,然后使用以下命令,您就可以在一分钟内轻松设置 Drone 扩展。
docker extension install drone/drone-ci-docker-extension:latest
这非常简单。导入管道;在这里,我们将导入上面的示例。
系统将提示您搜索并添加包含.drone.yml文件的存储库。所以让我们继续添加我们的回购。
然后,单击Actions下的Run Pipeline按钮以触发您的管道。
单击“运行管道”按钮后,系统将提示您添加运行管道所需的一些信息,例如要使用的机密文件、需要的环境变量以及要由管道运行的阶段。
在成功通过测试时,我们指定了两个简单的步骤,即测试和推送到 Docker。我们没有环境变量文件,所以将其留空,并且我们有一个包含 DockerHub 机密的机密文件,选择它。选择步骤作为测试、Docker 和机密文件后,单击运行选项卡。
如果指定的步骤通过,您将看到管道成功执行。
您还可以查看仪表板中运行的步骤。
恭喜您通过 Drone CI Docker 扩展成功运行您的 CI 管道。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.