Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >NodeJS CI

NodeJS CI

作者头像
离殊
发布于 2022-04-01 08:00:54
发布于 2022-04-01 08:00:54
1.4K00
代码可运行
举报
文章被收录于专栏:DingLin 随笔DingLin 随笔
运行总次数:0
代码可运行

😊 这次自己写了一个基于 nodejs 的自动化部署的工具,因为之前在用 jenkins 由于 jenkins 比较强大,而且比较笨重,对于我来说只是用来部署一个前端 application 而已,所以没必要用这样比较完善的工具,毕竟服务器资源有限。。

😋 附上一个之前写的文章 gitee + webhooks + jenkins 实现自动化部署

原理与 jenkins 类似,也是受益于 jenkins 的启发,自己写了一个 nodejs 部署工具

TIP

  • 本次仓库环境是 gitee ,但是只要有 webhooks 就都可以部署
  • gitlab 有自己的 gitlab CI 很不错的
  • github 也有 travis-ci 等等开源自动化部署工具

#nodejs 所需的核心库

🙃 由于本人比较懒,用了 koa

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// koa
const Koa = require('koa');
// koa-router
const Router = require('koa-router');
// 实例化 koa
const app = new Koa();
// 实例化 koa-router
const router = new Router();
// 是 child process 的封装
const shell = require('shelljs');
// 基于 nodejs 实现的自动发邮件
const nodemailer = require('nodemailer');
// get response body lib
const bodyParser = require('koa-bodyparser');
// 邮件配置
let transporter = nodemailer.createTransport({
  host: 'smtp.exmail.qq.com',
  port: 465, // SMTP 端口
  secureConnection: true, // 使用了 SSL
  auth: {
    user: '你要发送 email 的地址',
    // smtp授权码
    pass: '授权码,不是密码',
  }
});

#动手写 core code

然后开始写自动部署的接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
router.post('/deploy-application', (ctx, next) => {
  // 设置跨域
  ctx.set('Access-Control-Allow-Origin', '*')
  ctx.body = {
    message: 'ok',
    status: 200,
    data: {
      test: 'success'
    }
  }
})
  • 接口可以通了,这次可以开始写 core code 了
  • 首先拿到 webhooks 发送的 post 请求的参数
  • 将分支单独拿出来,毕竟一个仓库好几个分支呢
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const requestBranch = ctx.request.body.ref
const requestBranchLength = ctx.request.body.ref.lastIndexOf('/') + 1
const branch = requestBranch.slice(requestBranchLength)
  • 分支取到之后,可以进行判断了,先用开发分支来进行操作
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (branch === 'develop') {
  // 开发环境部署
  ctx.body = 'ok'
  shell.exec('yarn run deploy')
}
  • 然后用 shell js 执行一个 .sh 文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 确保抛错
set -e

REF="你的 git 仓库地址"
FOLDER="clone 远程仓库下来的文件夹位置"
DEPLOY_FOLDER="你要部署到服务器的文件夹位置"

rm -rf ${FOLDER}

git clone -b develop ${REF} ${FOLDER}

cd ${FOLDER}

yarn install

yarn run build:develop

rm -rf ${DEPLOY_FOLDER}

cp -R ${FOLDER}dist/${DEPLOY_FOLDER}

#邮件配置

  • 最后配置一下邮件系统(可选)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let mailOptions = {
  from: '"你的邮件" <你的邮件>', // sender address
  to: '要接受人的邮件', // list of receivers
  subject: '【项目】部署邮件', // Subject line
  html: '<b>项目已经部署至<a href="http://xxxx">http://xxx</a></b>' // html body
};
transporter.sendMail(mailOptions, (error, info) => {
  if (error) {
    return console.log(error);
  }
  console.log('Message sent: %s', info.messageId);
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app
  .use(bodyParser())
  .use(router.routes())
  .use(router.allowedMethods())

app.listen(3000);

#WebHooks 配置

可以去参考一下 gitee + WebHooks + jenkins 实现自动化部署,配置 WebHooks

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Koa - 初体验(写个接口)
  这几年node.js确实是越来越火了,好多公司对node.js都开始有要求。虽说前端不一定要会后端,但想要成为一个优秀的前端,node.js是必经之路。
WahFung
2020/08/24
1.5K0
Nodejs+koa.js实现服务端内容(超级详细
最近在使用vue3和typesript写一个后台系统的demo。对于一些登录及内容数据不想单纯的使用假数据模拟,所以从零搭建一个nodejs的后端内容
KID.
2023/10/08
8411
通用大模型的低代码平台——3分钟内快速搭建一个简单的智能体
大家好,我是yma16,通用大模型的低代码平台——3分钟内快速搭建一个简单的智能体。
yma16
2024/06/26
4330
通用大模型的低代码平台——3分钟内快速搭建一个简单的智能体
什么? 微信没有年度账单? 前端 nodejs 撸起来~ [接口实现]
最近逛掘金看见一片文章 非官方统计 2018 微信年度账单实现,作者利用调试微信获取到了 2018 年的所有消费明细,并根据类型进行分类统计,作文一个前端,便萌生了用 nodejs 实现一遍的想法,于是乎呢,就有了这篇文章了。
ihoey
2020/01/21
9340
Koa封装MySQL数据库
以下提供一个Node.js封装的MySQL数据库的方法,欢迎各位码农复制粘贴! 首先是封装的数据库文件config.js var mysql = require('mysql'); // 建立链接 function __connection() { var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '12345678',
越陌度阡
2020/11/26
1.2K0
Koa入门(三)Koa 路由
在 Koa 应用中,通常会使用 koa-router 模块,提供对路由的支持。那为什么需要路由呢?做前后端分离开发的朋友都遇到过,对接接口的时候后台都会提供一个地址,请求这个地址,传相应参数就能实现相应地数据处理。你可以把这个接口理解为路由的地址。
测不准
2021/04/14
1.4K0
我用nodejs实现了热加载接口文件,感觉又离“serverless”进了一步
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
爱吃大橘
2022/12/27
4830
通过 Serverless Components Koa 构建后台服务
Serverless Components 是支持多个云资源编排和组织的场景化解决方案,主要基于客户的具体场景,如 Express 框架支持、网站部署等。Serverless Components 可以有效简化云资源的配置和管理,将网关、COS 和 CAM 等产品联动起来,让客户更多关注场景和业务。
lqmeta
2020/07/06
1.1K0
通过 Serverless Components Koa 构建后台服务
NodeJS 使用 nodemailer 发送邮件
类库依赖 npm install nodemailer --save 导入 const nodemailer = require("nodemailer"); 关键点 配置 nodemailer.createTransport 的参数,指定 服务地址,端口号,验证的账户和密码 配置 mailOptions ,from , to 指定发送和目标,邮件内容等。 编写代码示例 "use strict"; const nodemailer = require("nodemailer"); const Mai
张云飞Vir
2020/03/16
1.8K0
Vue + Node.js 从 0 到 1 实现自动化部署工具
最近写了一个自动化部署的 npm 包 zuo-deploy[1],只需点击一个按钮,就可以执行服务器部署脚本,完成功能更新迭代。客户端使用 Vue + ElementUI,服务 koa + socket + koa-session 等。基础功能代码 300 行不到,已开源在 github。zuoxiaobai/zuo-deploy 欢迎 Star、Fork。这里介绍下具体实现细节、思路。
@超人
2022/04/14
1.7K0
Vue + Node.js 从 0 到 1 实现自动化部署工具
【Nodejs进阶】koa2+mySql用户注册和登录以及实现列表分页
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
微芒不朽
2022/09/13
1.7K0
知新 | koa框架入门到熟练第一章
是由Express原班人马打造,致力于成为一个更小的,更加富有表现力的,web框架。
mySoul
2020/07/15
1K0
钉钉对接
https://open.dingtalk.com/document/resourcedownload/local-development-tools-for-microapplications
码客说
2023/03/25
1K0
钉钉对接
Nuxt + Koa2 + Mongodb 手撸一个网上商城
文档地址:https://finget.github.io/2019/08/06/nuxt-koa-mongodb/
FinGet
2019/08/09
9.8K1
Nuxt + Koa2 + Mongodb 手撸一个网上商城
Koa - 中间件(理解中间件、实现一个验证token中间件)
Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的。
WahFung
2020/08/24
2.9K0
Koa - 中间件(理解中间件、实现一个验证token中间件)
日常用得到的 Koa 优雅代码指南
为什么选择 Koa 小王:为什么选择Koa? 老王:因为 Koa 比较轻量,几乎没有内置任何的额外功能。也是因为这个原因,Koa 的灵活度是很高的,喜欢折腾的人可以尝试下 小王:又轻量又几乎没有任何额
用户3806669
2021/07/06
1.9K0
日常用得到的 Koa 优雅代码指南
提交表单 单页发送成功到邮箱
在后端,你需要处理表单提交,并将成功信息发送到邮箱。这里以Node.js和Express为例。
hide
2025/02/20
1990
提交表单 单页发送成功到邮箱
【从前端到全栈】- koa快速入门指南
随着技术的不断发展,前端工程师也被赋予了越来越多的职责。不再是从前只需要切个图,加个css样式就能完成任务的切图仔了。接下来这篇文章,完成一个简单的登录注册,能让你快速上手,成为一个‘小全栈工程师’,here we go !
用户2356368
2019/04/03
9070
【从前端到全栈】- koa快速入门指南
Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
前言   前面一有写到一篇Node.js+Express构建网站简单示例https://cloud.tencent.com/developer/article/1020656   这篇还是用以前的例子, 用Node.js+Koa2构建   Koa:   https://github.com/koajs/koa http://koa.bootcss.com  (中文)   Koa就不多介绍了,前面也写过Express,同一个团队打造,前面也过express文章,对比着看,自然可以看出些优点! 搭
Porschev
2018/01/16
4.4K0
Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
Koa与常用中间件的使用
Node.js 是一个异步的世界,官方 API 支持的都是 callback 形式的异步编程模型,这会带来许多问题,例如callback 的嵌套问题 ,以及异步函数中可能同步调用 callback 返回数据,可能会带来不一致性,为了解决以上问题 Koa 出现了。
越陌度阡
2020/11/26
4.6K0
Koa与常用中间件的使用
相关推荐
Koa - 初体验(写个接口)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验