前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【架构师(第五十篇)】 服务端开发之自动发布到测试机

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

作者头像
一尾流莺
发布2022-12-10 13:56:00
2970
发布2022-12-10 13:56:00
举报

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

自动发布到测试机

技术前提

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

配置测试机

ssh 登录到云服务器

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

创建 work 账号

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

添加 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
image.png
image.png

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

image.png
image.png

免密登录

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

安装必备软件

安装 git

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

安装 docker

👉👉 CentOS安装文档

查看版本

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

设置镜像源

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

开放端口

  • 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

image.png
image.png

获取代码仓库

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

点击 settings

image.png
image.png

点击 Developer settings 

image.png
image.png

点击 Generate new token

image.png
image.png

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

image.png
image.png

最后点击 Generate token 生成令牌

image.png
image.png

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

image.png
image.png

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

image.png
image.png

删除 git 源,以免暴露信息

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

远程接口测试

提交代码,github actions 正常

image.png
image.png

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

image.png
image.png

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

image.png
image.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自动发布到测试机
    • 技术前提
    • 配置测试机
      • ssh 登录到云服务器
        • 创建 work 账号
          • 添加 work 账号的 sudo 权限
            • 免密登录
              • 安装必备软件
                • 开放端口
                • 自动发布到测试机
                  • 思路梳理
                    • 配置文件
                      • 临时设置 ssh key
                        • 获取代码仓库
                        • 远程接口测试
                        相关产品与服务
                        访问管理
                        访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档