请选择 进入手机版 | 继续访问电脑版

Node.js之轻松搞定DevOps:构建

前端开发  / Node.js  / 倒序浏览   © 著作权归作者本人所有

#楼主# 2020-3-21

跳转到指定楼层

到目前为止,我们已经能够设置部署和报告服务器,从推送新的提交到更新生产中的应用程序都有完整的方法。但是,掌握之前我们能实现什么自动化?如果我们进行了一系列检查以确保我们的应用在部署前行为正确,该怎么办?这就是GitHub Actions派上用场的地方。

GitHub Actions是一项功能,可让您在每次远程git存储库更改时运行自定义检查以及相应的操作。使用它的两种主要方法是在我们的代码库上运行自动检查或将其用于连续部署。当我们在自己的服务器上完成所有CD工作时,我们对前者最感兴趣。也就是说,我们将利用GitHub Actions运行测试和其他检查,以确保我们的代码库正常。

有几种方法可以管理git工作流程。我不会过多地研究它,但是归结为您是否想要功能分支,您是否区分developmaster,以及是否为每次推送自动部署代码。我研究了一段时间,这对我来说是最有意义的。就上下文而言,我指的是从事中小型项目的个人或小型团队。

这是我选择的工作流程:

  • 有两个分支:

    develop

    master
  • 代码被推送到

    develop
  • 每次推送都会触发由GH Actions支持的代码检查
  • 假设通过检查,将自动创建新的PR
  • 一旦PR被推到

    master

    ,代码已部署

  • 您会收到有关检查结果的通知

设置动作

我们不需要进行任何配置即可开始。在下面创建文件

.github/workflows

命名

nodejs.yml

并提交它,GitHub将自动处理并显示

nodejs

下的工作流程

Actions

标签。

我们的管道将包括三个工作:

build

notify

create PR

建立

我们的构建步骤将包含5个命令,一个接一个地运行。

  • npm audit

    :对依赖项进行安全审核

  • npm ci

    :彻底安装依赖项

  • npm run lint

    :减少您的代码库(例如ESLint)

  • npm run build

    :构建您的应用程序(例如Webpack)

  • npm test

    :运行测试(例如笑话)

当然,所有步骤都是可选的。您也可以添加自己的支票。

这是构建作业的完整代码:

build:
    runs-on: ubuntu-latest
    
    strategy:
      matrix:
        node-version: [8.x, 10.x, 12.x]
    
    steps:
    - uses: actions/checkout@v1
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: npm install, build, and test
      run: |
        npm audit
        npm ci
        npm run lint
        npm run build
        npm test
strategy.matrix

允许我们在多个Node.js版本上并行测试我们的应用程序,这非常方便。

通知

现在,在成功构建后,将Webhook发送到报告服务器。笔记传递

WEBHOOK_URL

从存储库秘密中。

notify:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Webhook
        uses: joelwmale/webhook-action@1.0.0
        env:
          WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }}
          data: "{'app': 'my app', 'success': true}"

GitHub执行构建后,它将触发到指定URL的Webhook,以便我们可以捕获它并显示一些消息。

另外,您可以使用JWT或HMAC对Webhook请求进行签名(例如,使用此操作)。

建立PR

最后,让我们在成功构建后将PR发送给master。的秘密

GITHUB_

前缀由GitHub本身提供,因此我们无需在此处做任何其他操作。

master-pr:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: Create Pull Request
        uses: repo-sync/pull-request@v2.0.1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

关于此工作流程的整洁之处在于,您可以大致了解每个PR的所有作业。

包起来

我们做到了!我们设法建立了部署应用程序的整个工作流程。

这就是我们取得的成就。

每次推送新代码:

  1. 对代码库进行了审核,以确保没有安全漏洞
  2. 构建工具确保没有构建时错误
  3. 运行Linter以确保代码格式正确
  4. 运行测试以确保应用正常运行
  5. 公关创建
  6. 我们收到通知

每次PR合并到

master

  1. CD服务器更新应用程序
  2. CD服务器通知报告服务器
  3. 我们收到通知

换句话说,所有无聊的工作都是自动完成的,而开发人员的投入却很少。

更多参考资料:
Node.js之轻松搞定DevOps:配置CD服务器
Node.js之轻松搞定DevOps:部署报告

转播转播
回复

使用道具

267

主题

269

帖子

917

积分

网站编辑

Rank: 8Rank: 8

积分
917
damonare 发表于 2020-3-22 08:53:53

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|ObjectX 超对象 |粤ICP备20005929号
Powered by  © 2019-2020版权归ObjectX 超对象