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

前端github-workflows部署腾讯云轻量服务器

首先说下我的github的目录结构

root-directory/
├── .github/
│   └── workflows/
│       └── deploy.yml                    # GitHub Actions 自动化部署配置
├── user-console/                         # 前端项目1
│   ├── src/*
│   ├── package.json
│   └── node_modules/                    # 依赖包目录
├── user-management/                     # 前端项目2
│   ├── src/*
│   ├── package.json
│   └── node_modules/                    # 依赖包目录
└── README.md

需要腾讯云准备得内容

  1. 服务器 ip地址(公网)
  2. ssh端口号(默认就用22)
  3. ssh链接的用户名
  4. ssh链接的私钥

ssh私钥如何获取

  • 服务器控制台
  • 左侧控制台 SSH密钥
  • 正常这个创建完会自动给你下载一个.pem后缀的秘钥,很关键记得保存。如果没了你就重新创建一个
  • 然后去服务器里面点开之后会看到SSH密钥,根据步骤绑定即可。
  • 注意:上面的名字就是( ssh链接的用户名)

腾讯云准备ok后去github上开始进行配置关键key信息,如下:

在这里插入图片描述

最后配置 yml

├── .github/
│   └── workflows/
│       └── deploy.yml 
name: 自动化部署更新# 触发条件:main分支推送且涉及前端/配置文件变更
on:push:branches: ["main-publish"]paths:- "user-console/**"- "user-management/**"- ".github/workflows/deploy.yml"jobs:build-user-console:runs-on: ubuntu-lateststeps:- name: 拉取代码uses: actions/checkout@v4with:fetch-depth: 0- name: 查看当前Node版本run: |echo "当前预装Node版本:$(node -v)"- name: 安装user-console依赖working-directory: "./user-console"run: |echo "安装前端依赖..."npm installif [ $? -ne 0 ]; then echo "前端依赖安装失败"; exit 1; fi- name: 前端打包working-directory: "./user-console"run: |echo "user-console打包..."npm run buildif [ $? -ne 0 ]; then echo "前端打包失败"; exit 1; fiecho "前端打包完成: $(du -sh ./user-console/dist)"- name: 暂存前端打包结果uses: actions/upload-artifact@v4with:name: user-console-artifactpath: "./user-console/dist"retention-days: 1build-user-management:runs-on: ubuntu-lateststeps:- name: 拉取代码uses: actions/checkout@v4with:fetch-depth: 0- name: 查看当前Node版本run: |echo "当前预装Node版本:$(node -v)"- name: 安装user-management依赖working-directory: "./user-management"run: |echo "安装user-management依赖..."npm installif [ $? -ne 0 ]; then echo "依赖安装失败"; exit 1; fi- name: user-management打包working-directory: "./user-management"run: |echo "开始user-management打包..."npm run buildif [ $? -ne 0 ]; then echo "user-management打包失败"; exit 1; fiecho "user-management打包完成: $(du -sh ./user-management/dist)"- name: 暂存user-management打包结果uses: actions/upload-artifact@v4with:name: user-management-artifactpath: "./user-management/dist"retention-days: 1deploy:runs-on: ubuntu-latestneeds: [build-user-console, build-user-management]steps:- name: 下载user-console打包结果uses: actions/download-artifact@v4with:name: user-console-artifactpath: ./user-console-dist- name: 下载user-management打包结果uses: actions/download-artifact@v4with:name: user-management-artifactpath: ./user-management-dist- name: 传输user-console文件到服务器uses: appleboy/scp-action@masterwith:host: ${{ secrets.SERVER_HOST }}port: ${{ secrets.SERVER_PORT }}username: ${{ secrets.SERVER_USER }}key: ${{ secrets.SERVER_SSH_KEY }}source: "./user-console-dist/*"target: "/tmp/deploy/user-console-dist/"strip_components: 1- name: 传输user-management文件到服务器uses: appleboy/scp-action@masterwith:host: ${{ secrets.SERVER_HOST }}port: ${{ secrets.SERVER_PORT }}username: ${{ secrets.SERVER_USER }}key: ${{ secrets.SERVER_SSH_KEY }}source: "./user-management-dist/*"target: "/tmp/deploy/user-management-dist/"strip_components: 1- name: 部署到腾讯云服务器uses: appleboy/ssh-action@masterwith:host: ${{ secrets.SERVER_HOST }}port: ${{ secrets.SERVER_PORT }}username: ${{ secrets.SERVER_USER }}key: ${{ secrets.SERVER_SSH_KEY }}script: |# 服务器目录配置USER_CONSOLE_DEPLOY="/var/www/user-console-dist"USER_MANAGEMENT_DEPLOY="/var/www/user-management-dist"echo "开始部署到腾讯云服务器..."# 检查上传的文件是否存在echo "检查上传文件..."ls -la /tmp/deploy/ || echo "deploy目录不存在"ls -la /tmp/deploy/user-console-dist/ || echo "user-console-dist目录不存在"ls -la /tmp/deploy/user-management-dist/ || echo "user-management-dist目录不存在"# 创建目标目录sudo mkdir -p $USER_CONSOLE_DEPLOYsudo mkdir -p $USER_MANAGEMENT_DEPLOY# 备份当前文件(如果存在)if [ -d "$USER_CONSOLE_DEPLOY" ] && [ "$(ls -A $USER_CONSOLE_DEPLOY)" ]; thensudo cp -r $USER_CONSOLE_DEPLOY /tmp/backup-user-console-$(date +%Y%m%d-%H%M%S) 2>/dev/null || trueecho "已备份user-console现有文件"fiif [ -d "$USER_MANAGEMENT_DEPLOY" ] && [ "$(ls -A $USER_MANAGEMENT_DEPLOY)" ]; thensudo cp -r $USER_MANAGEMENT_DEPLOY /tmp/backup-user-management-$(date +%Y%m%d-%H%M%S) 2>/dev/null || trueecho "已备份user-management现有文件"fi# 清空目标目录sudo rm -rf $USER_CONSOLE_DEPLOY/*sudo rm -rf $USER_MANAGEMENT_DEPLOY/*# 复制新文件到目标目录if [ -d "/tmp/deploy/user-console-dist" ] && [ "$(ls -A /tmp/deploy/user-console-dist)" ]; thensudo cp -r /tmp/deploy/user-console-dist/* $USER_CONSOLE_DEPLOY/echo "user-console文件复制完成"elseecho "错误: user-console-dist目录为空或不存在"exit 1fiif [ -d "/tmp/deploy/user-management-dist" ] && [ "$(ls -A /tmp/deploy/user-management-dist)" ]; thensudo cp -r /tmp/deploy/user-management-dist/* $USER_MANAGEMENT_DEPLOY/echo "user-management文件复制完成"elseecho "错误: user-management-dist目录为空或不存在"exit 1fi# 清理临时文件sudo rm -rf /tmp/deploy# 重启nginxsudo systemctl restart nginxecho "前端部署完成"echo "user-console部署到: $USER_CONSOLE_DEPLOY"echo "user-management部署到: $USER_MANAGEMENT_DEPLOY"

然后推送分支即可。在github的Actions中可以看到

http://www.dtcms.com/a/344444.html

相关文章:

  • 学云计算还是网络,选哪个好?
  • Linux:网络层IP协议
  • alicloud 阿里云有哪些日志 审计日志
  • css的white-space: pre
  • Docker 命令大全
  • VsCode 上的Opencv(C++)环境配置(Linux)
  • 四种方法把 Proxy 对象代理数组处理成普通数组
  • URP+Unistorm5.3.0 -> webGL天空黑屏的处理
  • 如何精准高效地比对两份合同的差异?
  • Java数据结构——7.2 二叉树-二叉树
  • MPLS原理
  • 新能源知识库(84)什么是IEC白皮书
  • 初识数据结构——Map和Set:哈希表与二叉搜索树的魔法对决
  • CoreShop微信小程序商城框架开启多租户-添加一个WPF客户端以便进行本地操作--读取店铺信息(6)
  • 循环神经网络实战:GRU 对比 LSTM 的中文情感分析(三)
  • UE5关卡蓝图能不能保存副本呀?
  • Pandas 合并数据集:concat 和 append
  • 2025年城市建设与公共管理国际会议(UCPM 2025)
  • Linux之Ubuntu入门:Vmware中虚拟机中的Ubuntu中的shell命令-常用命令
  • C++实现简易线程池:理解 function 与 bind 的妙用
  • CMake进阶:Ninja环境搭建与加速项目构建
  • JVM-(8)JVM启动的常用命令以及参数
  • 期货Level-2五档订单簿每250毫秒高频数据及分时、日度历史行情深度解析
  • 【大模型采样策略(Greedy、Top-k、Top-p、温度调节)三化学习】
  • 旧物新生,交易无界——探索二手交易小程序系统的绿色革命
  • 优考试局域网系统V6.0.0版
  • 谁才是多快好省的数据分析选择:SelectDB vs. ClickHouse vs. Snowflake
  • 关于常用线程池CompletableFuture和Future的介绍
  • 我从零开始学习C语言(13)- 循环语句 PART2
  • QT-左右侧边栏动画