githubAction 自动化发布部署到服务器
在 github 仓库创建一个自动化配置new workflows
,创建好的文件会在项目的.github/workflows/main.yml
出现
将main.yml
文件内容修改如下:
yml
# 当前自动化的名称
name: deploy-website
on:
# 当 git push 时
push:
# 要编译的分支
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
# 从当前分支拷贝出来
- uses: actions/checkout@v3
# 安装 pnpm
- uses: pnpm/action-setup@v2
with:
version: 8
# 安装 nodejs
- name: 安装 nodejs
# 指定 node 版本
uses: actions/setup-node@v2.5.1
with:
node-version: "19.x"
# 安装 npm 依赖包
- name: install deps
run: pnpm install
# 编译
- name: build app
run: npm run build
# 将编译出来的文件拷贝发送到你的服务器
- name: copy dist file with scp
uses: appleboy/scp-action@master
with:
# 因为当前仓库是开源的,直接写服务器地址会被看到,所以这里使用的是 github 的变量,可以再仓库的 setting --> Secrets and variables --> Actions 中点击 New repository secret 创建变量名,名为 SERVER_HOST 时参考如下使用
# 你的服务器地址
host: ${{ secrets.SERVER_HOST }}
# 服务器登录名称
username: ${{ secrets.SERVER_USERNAME }}
# 服务器登录密码
password: ${{ secrets.SERVER_PASSWORD }},
# 端口,一般是 22
port: ${{ secrets.SERVER_PORT }}
# 编译出来的文件夹名称,默认是 dist 文件
source: "kuangyx/"
# 需要拷贝到服务器的哪个路径下
target: ${{ secrets.SERVER_TARGET }}
# 服务器的 ssh
key: ${{ secrets.SERVER_PRIVATE_KEY }}
github 变量
因为当前仓库是开源的,直接写服务器地址会被看到,所以这里使用的是github
的变量,可以再仓库的setting --> Secrets and variables --> Actions
中点击New repository secret
创建变量名,名为SERVER_HOST
时参考如下使用
secrets.SERVER_PRIVATE_KEY
的设置
- 需要在你的服务器运行
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
创建ssh
- 运行
cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
,其中b@B
对应你的服务器登录名与用户名,看控制台当前的用户即可,例如[root@VM-0-3-centos ~]#