首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
【架构师(第一篇)】整体需求分析和架构设计
2
【架构师(第二篇)】脚手架架构设计和框架搭建
3
【架构师(第三篇)】脚手架开发之掌握Lerna操作流程
4
【架构师(第四篇)】脚手架开发之Lerna源码分析
5
【架构师(第五篇)】脚手架之import-local执行流程及简历设计
6
【架构师(第六篇)】脚手架之需求分析和架构设计
7
【架构师(第七篇)】脚手架之准备阶段编写
8
【架构师(第八篇)】脚手架之 commander 框架使用方法
9
【架构师(第九篇)】如何让 Node 环境支持 ES Module
10
【架构师(第十篇)】脚手架之注册命令及架构优化
11
【架构师(第十一篇)】脚手架之命令注册和执行过程开发
12
【架构师(第十二篇)】脚手架之命令行交互工具 inquirer.js 使用方法
13
【架构师(第十三篇)】脚手架之创建项目准备阶段开发
14
【架构师(第十四篇)】脚手架之 egg.js 和 mongodb 的使用
15
【架构师(第十五篇)】脚手架之创建项目模板开发
16
【架构师(第十六篇)】脚手架之创建项目模板的下载与更新
17
【架构师(第十七篇)】脚手架之 ejs 和 glob 的使用
18
【架构师(第十八篇)】脚手架之项目模板的安装
19
【架构师(第十九篇)】脚手架之组件库模板开发
20
【架构师(第二十篇)】脚手架之自定义模板及第一阶段总结
21
【架构师(第二十一篇)】编辑器开发之需求分析和架构设计
22
【架构师(第二十二篇)】编辑器开发之项目整体搭建
23
【架构师(第二十三篇)】编辑器开发之画布区域组件的渲染
24
【架构师(第二十四篇)】编辑器开发之添加模版到画布
25
【架构师(第二十五篇)】编辑器开发之属性编辑区域表单渲染
26
【架构师(第二十六篇)】编辑器开发之属性编辑同步渲染
27
【架构师(第二十七篇)】前端单元测试框架 Jest 基础知识入门
28
【架构师(第二十八篇)】 测试工具 Vue-Test-Utils 基础语法
29
【架构师(第二十九篇)】Vue-Test-Utils 触发事件和异步请求
30
【架构师(第三十篇)】Vue-Test-Utils 全局组件和第三方库 vuex | vue-router
31
【架构师(第三十一篇)】前端测试之 TDD 的开发方式
32
【架构师(第三十二篇)】 通用上传组件开发及测试用例
33
【架构师(第三十三篇)】 Vue 中的实例及本地图片预览
34
【架构师(第三十四篇)】 业务组件库开发之 vue3 的插件系统
35
【架构师(第三十五篇)】 业务组件库开发之使用 Rollup 进行打包
36
【架构师(第三十六篇)】 业务组件库开发之发布到 NPM
37
【架构师(第三十七篇)】 服务端开发之后端框架与数据库技术选型
38
【架构师(第三十八篇)】 服务端开发之本地安装最新版 MySQL 数据库
39
【架构师(第三十九篇)】 服务端开发之连接 MySQL 数据库
40
【架构师(第四十篇)】 服务端开发之连接 Mongodb 数据库
41
【架构师(第四十一篇)】 服务端开发之安装并连接 Redis数据库
42
【架构师(第四十二篇)】 服务端开发之常用的登录鉴权方式
43
【架构师(第四十三篇)】 服务端开发之单元测试和接口测试
44
【架构师(第四十四篇)】 服务端开发之 pm2 和 nginx 介绍
45
【架构师(第四十五篇)】 服务端开发之认识 Github actions
46
【架构师(第四十六篇)】 服务端开发之安装 Docker
47
【架构师(第四十七篇)】 服务端开发之认识 Docker
48
【架构师(第四十八篇)】 服务端开发之 Dockerfile
49
【架构师(第四十九篇)】 服务端开发之认识 Docker-compose
50
【架构师(第五十篇)】 服务端开发之自动发布到测试机
清单首页架构文章详情

【架构师(第五十篇)】 服务端开发之自动发布到测试机


本文正在参加「金石计划 . 瓜分6万现金大奖」

自动发布到测试机

技术前提

  • github actions 监听 git 提交,并执行自定义命令
  • docker 可以一键部署开发环境
  • 两者结合,即可完成自动发布到测试机

配置测试机

ssh 登录到云服务器

代码语言:javascript
复制
ssh root@82.156.xxx.xx
// 然后输入密码
代码语言:javascript
复制
// 退出
exit

创建 work 账号

代码语言:javascript
复制
adduser work
passwd work
// 然后输入两次密码 

添加 work 账号的 sudo 权限

代码语言:javascript
复制
// 找到文件位置
whereis sudoers
// 修改权限
chmod u+w /etc/sudoers
// 编辑文件 找到 root ALL=(ALL) ALL 再添加一行 work ALL=(ALL) ALL
vim /etc/sudoers
// 修改权限
chmod u-w /etc/sudoers

退出 root 账号,使用 work 登录云服务器,然后执行 su ,再输入 root 账号的密码,即可拥有超级权限。

免密登录

root 账号可以免密登录了, work 账号不能,没弄明白,就先用 root 账号操作吧,反正就我自己用。

安装必备软件

安装 git

代码语言:javascript
复制
yum -y install git
git --version

安装 docker

👉👉 CentOS安装文档

查看版本

代码语言:javascript
复制
docker --version
docker compose version

设置镜像源

代码语言:javascript
复制
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cd /etc/yum.repos.d/
ll

开放端口

  • B 端 FE - 80
  • B 端 server - 8081
  • C 端 - 8082
  • 统计服务,收集日志 - 8083
  • 统计服务 OpenApi - 8080
  • admin FE - 8085
  • admin server - 8084

线上环境,不会开放这么多端口,而是用 nginx 反向代理

自动发布到测试机

思路梳理

  • 使用 github actions 监听 main 分支 push 行为
  • 登录测试机,获取最新 main 分支代码
  • 重新构建镜像,docker-compose build editor-server
  • 重启所有容器,docker-compose up -d

配置文件

代码语言:javascript
复制
# dev 分支 自动部署到测试机
name: deploy for dev

on:
    push:
        branches:
            - 'main' # 只针对 main 分支
        paths:
            - '.github/workflows/*'
            # - '__test__/**' # dev 不需要立即测试
            - 'src/**'
            - 'Dockerfile'
            - 'docker-compose.yml'
            - 'bin/*'

jobs:
    deploy-dev:
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@v2
            - name: set ssh key # 临时设置 ssh key
              run: |
                  mkdir -p ~/.ssh/
                  echo "${{secrets.WFP_ID_RSA}}" > ~/.ssh/id_rsa
                  chmod 600 ~/.ssh/id_rsa
                  ssh-keyscan "82.156.xxx.xx" >> ~/.ssh/known_hosts
            - name: deploy # 部署
              run: |
                  ssh root@82.156.xxx.xx "
                    cd /home/work/imooc-lego/biz-editer-server;
                    git remote add origin https://${{secrets.WFP_TOKEN}}@github.com/alanhzw/biz-editer-server.git;
                    git checkout dev;
                    git pull origin dev; # 重新下载最新代码
                    git remote remove origin; # 删除 origin ,否则会暴露 github 密码
                    # 启动 docker
                    docker compose build editor-server; # 和 docker-compose.yml service 名字一致
                    docker compose up -d;
                  "
            - name: delete ssh key # 删除 ssh key
              run: rm -rf ~/.ssh/id_rsa

临时设置 ssh key

把本机的私钥放在代码仓库 setting 里面的 Secrets

获取代码仓库

教程里面是用用户名密码的方式克隆仓库的,但是现在已经不支持了,需要使用个人的 token

点击 settings

点击 Developer settings 

点击 Generate new token

选择永不过期,把所有的框都勾选上

最后点击 Generate token 生成令牌

将生成的令牌拷贝下来,保存,下次就看不到了。

然后把马赛克的地方换成刚才复制的 token 就可以克隆仓库了。

删除 git 源,以免暴露信息

代码语言:javascript
复制
git remote remove origin
git remote -v

远程接口测试

提交代码,github actions 正常

到云服务器上检查一下,镜像正常

远程访问一下接口,是通的,完美!!!

举报
领券