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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
flutter 版本控制fvm
powershell 管理员身份运行 不会的话,先打开一个powershell 窗口 ,然后右击任务栏,选择第一个,即可进入
徐建国
2021/07/30
9300
flutter 版本控制fvm
Flutter版本控制fvm
安装fvm后,考虑设置环境变量 FVM_HOME 或 FVM_GIT_CACHE,否则默认安装 flutter SDK 缓存路径为 ~/fvm/versions;
徐建国
2021/08/25
2.3K0
鸿蒙版 Flutter 版本管理利器:FVM 使用指南
FVM(Flutter Version Manager)是一个专门为 Flutter 应用开发设计的版本管理工具。它允许开发者在同一台机器上安装和管理多个 Flutter 版本,解决了团队协作和项目迁移时因 Flutter 版本差异导致的兼容性问题。它允许开发者在不同的 Flutter 项目之间快速切换版本,而无需每次都下载和配置新的 Flutter SDK
徐建国
2025/05/13
860
鸿蒙版 Flutter 版本管理利器:FVM 使用指南
Flutter 找不到 android sdk(图文详解)记一次安装中错误的过程
周末的时候升级了windows11的系统,之后再安装flutter的时候遇到下面的问题就做了一下记录 至于如何安装flutter,我在前面的教程里也有写到,就不再阐述。这次我安装的时候用了fvm版本控制工具,
徐建国
2021/11/30
2.5K0
Flutter 找不到 android sdk(图文详解)记一次安装中错误的过程
Flutter开发环境搭建
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。flutter发布的最新版已经支持pc端了。
若与
2019/05/15
1.1K0
Flutter开发环境搭建
FVM 一秒切换VSCode 的Flutter版本
FVM 可以在用户本机通过安装多个Flutter SDK版本,来为项目指定Flutter版本,或者快速在各个版本间切换,解决只有一个Flutter版本对不同项目兼容问题。参考链接
Qson
2022/04/11
2.6K0
FVM 一秒切换VSCode 的Flutter版本
鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
参考鸿蒙Flutter实战:01-搭建开发环境文章的说明,首先安装 Flutter SDK 3.22.0。
少湖说
2024/11/03
5940
鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
将Flutter程序打包为ios应用并进行安装使用
为设备(ios-release)构建com.example.myTimeApp... ════════════════════════════════════════════════════════════════════════════════ 找不到有效的代码签名证书 您可以通过在Xcode中使用您的Apple ID登录并创建iOS开发证书以及为您的项目创建一个 配置文件来连接到您的Apple开发者帐户,方法如下: 1- 使用以下命令打开Flutter项目的Xcode目标: open ios/Runner.xcworkspace 2- 在导航器中选择“Runner”项目,然后选择“Runner”目标 在项目设置中 3- 确保在Signing & Capabilities > Team下选择了“Development Team”。 您可能需要: - 首先使用您的Apple ID在Xcode中登录 - 确保您拥有一个有效的唯一Bundle ID - 使用您的Apple开发者帐户注册您的设备 - 让Xcode自动为您的应用程序配置配置文件 4- 再次构建或运行您的项目 5- 在iOS设备上信任您新创建的开发证书 通过设置 > 通用 > 设备管理 > [您的新证书] > 信任
fliter
2024/05/11
5350
将Flutter程序打包为ios应用并进行安装使用
鸿蒙Flutter实战:01-搭建开发环境
1.安装 DevEco Studio NEXT IDE, 注意版本应该是 Next,当前最新的是 Beta3
少湖说
2024/10/21
3240
鸿蒙Flutter实战:01-搭建开发环境
choco 安装 和 mkcert 本地https
原文链接:https://blog.spiritling.cn/posts/4cb12659/
SpiritLing
2020/07/20
1.4K0
choco 安装 和 mkcert 本地https
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutte
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-卓伊凡换人优雅草Alex
卓伊凡
2025/02/02
1960
React Native学习笔记(二)—— 概要、开发环境搭建、第一个React Navite程序
在移动端开发项目中。开发资源不够时,同时由两个团队维护安卓和IOS两套原生APP是成本很高的。此时,就需要选择一个同时支持多平台的客户端开发框架,能够使用一套代码,编译出多平台的APP。
张果
2023/04/01
3.7K0
React Native学习笔记(二)—— 概要、开发环境搭建、第一个React Navite程序
Flutter自制工具之fluct助力Flutter快速开发神器
一个帮助开发Flutter应用程序的工具 .---------------------------------------------- | github地址: | https://github.com/rhymelph/fluct | pub地址: | https://pub.dev/packages/fluct `----------------------------------------------
rhyme_lph
2020/03/20
8320
Flutter自制工具之fluct助力Flutter快速开发神器
端开发技术——5个高效的Flutter开发工具
![](https://img-blog.csdnimg.cn/38fbbdcb183a4cb4b51ed03edc91a9fe.png)
思想者杰克
2021/11/04
8860
端开发技术——5个高效的Flutter开发工具
flutter实战项目之博客项目
https://www.bilibili.com/video/bv1uy4y1t7LX
徐建国
2021/11/30
9210
flutter实战项目之博客项目
在WSL2中安装CentOS发行版
通过使用 tar 文件导入任何 Linux 发行版,可在适用于 Linux 的 Windows 子系统 (WSL) 中使用该发行版(即使它不在 Microsoft Store 中提供)。
AiDBA宝典
2023/04/26
11K0
在WSL2中安装CentOS发行版
程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?
起因:之前一直用Mac开发,换了家公司,只许用Windows下开发,说实话,一开始我是拒绝的,可自从看到了这几个工具以后......
Ai学习的老章
2021/01/12
6810
程序员该如何把 Windows 系统打造的跟 Mac 一样牛逼?
Flutter 2.10 升级填坑指南
事实上按照 Flutter 每个版本的投入使用规律,应该是第三个小版本最稳,以 Flutter 目前庞大的用户量,每次正式版的发布必然带来各种奇奇怪怪的问题,一般情况下我推荐 2.10 版本等到 2.10.3 发布再投入生产会更稳妥,但是如果你等不及官方 hotfix ,那么后面的内容可能可以帮助到你。
GSYTech
2022/03/04
1.5K0
Flutter 2.10 升级填坑指南
React Native在Android当中实践(二)——搭建开发环境
React Native在Android当中实践(一)——背景介绍 React Native在Android当中实践(二)——搭建开发环境 React Native在Android当中实践(三)——集成到Android项目当中 React Native在Android当中实践(四)——代码集成 React Native在Android当中实践(五)——常见问题
Demo_Yang
2018/10/15
1.2K0
Win下必备神器之Cmder
诚言,对于开发码字者,Mac和Linux果断要比Windows更贴心;但只要折下,Windows下也是有不少利器的。之前就有在Windows下效率必备软件一文中对此做了下记载;其虽没oh-my-zsh那么逆天的存在,却也甚是好用,至少要比Windows原生Cmd好出了天际。因为好用,所以“必备”。 ---- 『有则推荐』: 自 2017 年初,就有开始利用闲余时光,打磨个人最新作品——「倾城之链」 ,有意将其打造成优良开放型平台,旨在云集全球优秀网站,让您更为便捷地探索互联网中那更广阔的世界;在这里,您可以
晚晴幽草轩轩主
2018/03/27
3.1K0
推荐阅读
相关推荐
flutter 版本控制fvm
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验