通过GITHUB操作实施Node.js应用程序的连续集成
#javascript #github #node #githubactions

您是否一直在不构建和部署应用程序而没有将连续集成(CI)进行?好吧,这是转动新叶子的标志。

作为开发人员,重要的是要确保始终发货高质量的代码。结果,CI是必不可少的练习。它可能会大大缩短部署新功能和更新所需的时间,同时还可以提高软件的完整性和稳定性。

在本文中,我们将探讨如何使用github Action添加连续集成。

连续整合到底是什么?

连续集成(CI)是在将代码变为存储库后立即自动构建和测试代码更改的过程。这有助于在开发过程的早期捕获错误和错误,然后才能引起更大的问题。
Gitlab's Article on CI/CD对这个话题有更多的启发。

以下是在软件应用程序中使用CI至关重要的一些原因:

  • 它可以更快地就代码更改进行反馈,从而使问题在开发过程中捕获和解决。
  • 它通过在生产之前捕获错误和错误来提高产品的可靠性。
  • 它通过自动运行安全性测试和扫描作为开发过程的一部分来提高安全性。

什么是github行动?

github操作是自动化软件工作流程的平台,包括连续集成。它允许开发人员创建自定义工作流,以自动化各种任务,包括构建,测试和部署代码更改。这些工作流是在YAML文件中定义的,可以通过诸如Code推出,拉请请求和发表评论之类的事件触发。

github动作的一些关键特征包括:

  • 与GitHub存储库简化集成
  • 支持广泛的编程语言和框架
  • 能够在不同操作系统和虚拟环境上运行工作流程的能力
  • 支持自定义动作和第三方集成
  • 详细的日志和报告,以帮助诊断问题并跟踪进度

先决条件

要遵循本文,我们需要在计算机上安装以下内容:

创建我们的node.js应用

要演示如何与github操作添加连续集成,我们将创建一个简单的node.js应用程序。为此,我们将遵循以下步骤:

  • 本地初始化一个node.js项目。
$ mkdir gh-actions-demo
$ cd gh-actions-demo
  • 初始化为node.js项目并添加必要的。相关性
$ npm init
$ npm i express
$ npm i --save-dev jest supertest
  • package.json文件中添加/替换以下片段。
  "scripts": {
    "test": "jest",
    "start": "node src/index.js"
  },
  "jest": {
    "testEnvironment": "node",
    "coveragePathIgnorePatterns": [
      "/node_modules/"
    ]
  },
  • 在github上创建一个存储库。
    New GitHub Repository

  • 将本地项目链接到GitHub存储库

$ echo "# <REPOSITORY_NAME>" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/<USERNAME>/<REPOSITORY_NAME>.git
git push -u origin main

接下来,我们将在项目中添加以下四个文件。

src/app.js

这是应用对象。我们已经将其分开以适当测试。

'use strict';
const express = require('express');

// App
const app = express();
app.get('/hello', (req, res) => {
  res.status(200).json({
    message: "Hello World!"
  });
});

module.exports = { app };

src/index.js

这是应用程序的入口点。服务器将在这里安置。

const { app } = require('./app');

const PORT = 8080;
app.listen(PORT, () => {
  console.log(`Running on http://localhost:${PORT}`);
});

src/index.test.ts
该文件包含一个测试。该测试的目的是确保我们的应用程序应尽可能地工作。

const request = require('supertest');
const { app } = require('./app');

describe('/hello', () => {
  it('returns `Hello World!`', async () => {
    const data = await request(app).get('/hello');
    expect(data.statusCode).toBe(200);
    expect(data.body.message).toBe('Hello World!');
  });
});

.gitignore

现在,我们不想整天将node_modules上传到Github,对吗?我不这么认为。

node_modules

我们还可以通过运行npm start和/或npm test来测试该应用程序是否有效。

为我们的node.js项目设置github操作

现在我们拥有了node.js应用程序,我们可以在项目中添加github操作。我们将在.github/Workflows目录中创建一个新的YAML文件,以定义我们的工作流程。我们的工作流将包括两个工作:构建和测试我们的代码并将我们的应用部署到分期环境中。
要使用GitHub操作为Node.js项目设置CI/CD,请按照以下步骤:

  • 在项目的根目录中创建一个.github/Workflows目录。
$ mkdir .github/workflows
  • 接下来,创建工作流目录中的yaml文件main.yaml,以定义工作流程。此工作流将指定构建,测试和部署我们的代码更改的步骤。

main.yml

name: Node.js CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Use Node.js 14
      uses: actions/setup-node@v3
      with:
        node-version: 14
        cache: 'npm'

    - run: npm install
    - run: npm test

每当向main分支提交或提交时,就会启动此工作流程。它也可以修改以包括更多分支,或者如果其他分支的工作流不同,那么我们可以创建单独的yaml文件。

  • 将更改推向github以触发工作流程。如果一切顺利,工作流程应该成功运行。绿色检查标记应显示在GitHub上的提交消息旁边,如下所示:

Workflow success

添加工作流状态徽章

下一步的行动是在我们的存储库中添加一个工作流状态徽章。这可以通过将以下链接添加到我们的README.md
来完成

![Main Workflow](https://github.com/<OWNER>/<REPOSITORY>/actions/workflows/<WORKFLOW_FILE>/badge.svg)

在这种情况下,URL为:

![Main Workflow](https://github.com/olumidayy/gh-actions-demo/actions/workflows/main.yml/badge.svg)

如果做得正确,这会为我们的README.md添加一些徽章,如下所示:
Main Workflow

结论

使用github操作为Node.js应用程序实施连续集成可以帮助简化开发工作流程,减少错误并提高效率。

通过本文概述的步骤,我们可以轻松地为Node.js应用程序设置基本的CI管道,自动化我们的测试过程并确保我们的代码始终取决于标准。

通过使用GitHub操作,我们可以专注于编写高质量代码,而该平台负责其余的代码。我希望我能说服您今天转过新的叶子! ;)