当前位置: 首页 > news >正文

如何搭建一个自己上传视频的网站想做代理商去哪找项目

如何搭建一个自己上传视频的网站,想做代理商去哪找项目,中国科技成就手抄报,网站建设和网络优化什么是CI/CD 在前端开发中#xff0c;CI/CD 是 Continuous Integration#xff08;持续集成#xff09;和 Continuous Deployment/Continuous Delivery#xff08;持续部署/持续交付#xff09;的简称。它是一种软件开发实践#xff0c;自动化了应用的构建、测试和发布过…什么是CI/CD 在前端开发中CI/CD 是 Continuous Integration持续集成和 Continuous Deployment/Continuous Delivery持续部署/持续交付的简称。它是一种软件开发实践自动化了应用的构建、测试和发布过程。 CI/CD的作用 持续集成CI当开发者将代码推送到版本控制系统如 GitHub、GitLab时CI 工具会自动构建和测试应用代码以确保代码没有引入新的问题。前端代码在此过程中会进行 自动化单元测试和集成测试代码质量检查如 ESLint编译和构建打包例如 Webpack 或 Vite 持续部署/持续交付CD 持续交付构建和测试通过后代码自动发布到一个准备好的环境中如 staging 环境进行手动审核之后再发布到生产环境。持续部署代码通过测试后自动部署到生产环境使更新可以快速上线。对于前端这通常会将最新的代码发布到 Web 服务器或 CDN。 实现CI/CD 1.1 编写配置文件 // 配置 const config [{name: 项目1,value: 项目1,ssh: {host: xxxx,port: xxxx,username: xxxx,password: xxxx,passphrase: xxxx},targetDir: G:/桌面/code/xmzs/cicd-project/dist,targetFile: dist.zip,deployDir: /www/wwwroot/,releaseDir: web,buildCommand: pnpm build} ]export default config配置文件为什么是一个数组呢? 因为可以支持多个项目上传不同的服务器 1.2 编写程序入口 function main() {}main()1.3 读取配置文件的内容 有了入口之后我们只需要使用node启动就可以完成程序的运行。有了配置文件之后我们需要读取其中的配置完成后续的动作那么我们要怎么读取配置文件的内容呢。我们可以采用命令行的方式来读取。因此我们需要安装inquirer这个库。 // 命令行交互工具 import inquirer from inquirer; import config from ../config.js;async function commanderLine () {const res await inquirer.prompt([{type: list,message: 请选择项目,name: project,choices: config}])return config.find(item item.value res.project) }export default commanderLine通过以上函数可以实现一下效果 1.4 压缩 那么我们可以根据命令行获取的路径参数对需要上传到服务器的文件夹进行压缩需要用到archiver这个库来对目录进行压缩。 // 编写压缩文件的代码 import archiver from archiver import fs from fs /*** * param {*} targetDir 压缩的目录的位置* param {*} localFile 压缩之后压缩包存放的位置*/ function compressFile (targetDir, localFile) {return new Promise(resolve {// 创建可写流const output fs.createWriteStream(localFile)const archive archiver(zip, {zlib: { level: 9 }})archive.pipe(output)archive.directory(targetDir, dist)archive.finalize()archive.on(close, () {console.log((archive.pointer() / 1024 / 1024).toFixed(2), MB)resolve()})}) }export default compressFile1.5 使用ssh连接远程服务器 为了连接远程服务器我们可以使用node-ssh这个库来完成 // 连接ssh服务 import * as ssh from node-sshconst sshClient new ssh.NodeSSH()function sshConnect (sshConfig) {return new Promise(resolve {sshClient.connect(sshConfig).then(res {console.log(connect success)resolve(res)})}) }export default {sshConnect,ssh: sshClient }import service from ./src/ssh.js async main() {...await service.sshConnect(options.ssh) }1.6 上传文件 // 上传远端服务器的代码 // local表示需要上传的目录 // config.deployDir config.releaseDir表示上传到服务器的目录的路径 function uploadFile (ssh, config, local) {return new Promise(resolve {ssh.putFile(local, config.deployDir config.releaseDir).then(() {console.log(upload success)resolve()}).catch(err {console.log(err)})}) }export default uploadFile通过以上步骤已经基本实现文件的上传但是目前我们上传的是一个压缩包因此需要对他进行解压还有就是现在只能上传一次因为服务器不允许同名文件出现因此我们第二次上传时需要将上一次上传的给删掉。但是我们要怎么删除呢 可以使用linux命令node-ssh提供了执行linux命令的方法 // 操作ssh命令的文件 function runCommander (ssh, command, path) {return new Promise(resolve {ssh.execCommand(command, { cwd: path }).then((result) {resolve()})}) }export default runCommander通过以上方法我们可以完成对linux命令的执行 rm -rf 完成对原先文件的删除unzip 完成对压缩包的解压mv 完成对文件的重命名 1.7 执行对于需要上传的文件的打包 当我们对项目进行修改时服务器上的内容并没有更新因为我们并没有对其进行重新打包因此我们还需要在上传文件到服务器之前对项目进行重新打包。那么要如何在执行main脚本的同时执行项目的打包脚本呢我们可以使用node的原生模块child_process子进程。 import { execSync } from child_process function runBuild (path, command) {return new Promise(resolve {execSync(command, {cwd: path,stdio: inherit})resolve()}) }export default runBuild通过以上函数我们可以完成对项目的打包。 1.8 最终的启动文件 import commanderLine from ./src/helper.js import compressFile from ./src/compressFile.js import service from ./src/ssh.js import uploadFile from ./src/uploadFile.js import runCommander from ./src/handleCommand.js import path from path import runBuild from ./src/build.js async function main () {const options await commanderLine()const local path.join(process.cwd(), options.targetFile)await runBuild(options.targetDir, options.buildCommand)await compressFile(options.targetDir, local)await service.sshConnect(options.ssh)await runCommander(service.ssh, rm -rf ${options.releaseDir}, options.deployDir)await uploadFile(service.ssh, options, local)await runCommander(service.ssh, unzip ${options.releaseDir}, options.deployDir)await runCommander(service.ssh, rm -rf ${options.releaseDir}, options.deployDir)await runCommander(service.ssh, mv dist ${options.releaseDir}, options.deployDir)service.ssh.dispose() // 断开ssh } main()最终我们只需要执行node app.js就能完成对项目的打包以及部署到服务器了。
http://www.ho-use.cn/article/10822929.html

相关文章:

  • 知名的传媒行业网站开发网站建设内容与实现功能
  • 如何做网站支付链接网站程序语言那个好
  • 做网站还是做游戏上海知名网站制作公司
  • 企业网站宽度柳州市建设工程技术服务中心
  • 网站建设业务员转换大贵阳专业做网站的公司
  • 网站上地图怎么做的赣州网站建设哪家公司好
  • 网站建设地位网站开发维护成本
  • 天津做网站哪家比较好百度怎么推广自己的视频
  • 昆明快速做网站七宝网站建设
  • 网站服务器是干什么的网站如何做链接
  • 南江移动网站建设西安英文网站制作
  • 视频点播网站开发做网站的主题
  • 网站建设优化推广杭州绍兴seo全网营销
  • 查询成绩的网站怎么做互站网怎么样
  • 做网站过程电子商务网站开发教案
  • ps课堂网站广东省建设厅官网证件查询
  • 十年经验网站开发公司软文范文大全1000字
  • 深圳品牌网站制作多少钱男女做羞羞事漫画网站免费
  • 做网站如何把支付宝微信吧seo顾问是干什么
  • 宁夏考试教育网站一家公司做两个网站吗
  • 网站建设样本南昌优化排名推广
  • 网站建设素材图外包岗
  • 北京网站建站公重庆建设厅网站公示公告栏
  • 企业网站建设方案大全做问卷网站
  • 新闻单位网站建设的意义网络推广企业网站推广策划书
  • 手机做外贸有什么好的网站郑州app开发定制多少钱
  • 宁波网站制作作门户网站是什么意思?
  • 网站源码官网一级a做爰片免费网站录像
  • 聊城市东昌府区建设路小学网站怎么用手机网站做软件
  • 域名注册完成后如何做网站滑县网站建设公司