Github Actions + 服务器 SSH配置自动化打包流程
如果我们有个小型的项目,运行在自己的服务器上,一般开发流程是本地开发,推送到github,然后自己手动登录服务器,拉取最新的代码并打包,然后把打出的包上线。
我们希望当我们在github上 push 代码的时候,github 能够自动通知服务器拉取最新的代码并打包,然后把打出的包上线。此时我们不用专门去搭建一套CI/CD系统(比如jenkins、gitlab ci)。
最简单的方式可以怎么做呢?我们可以使用GitHub Actions来实现这个需求,具体方案如下。
步骤 1:配置 GitHub Secrets
在 GitHub 仓库 设置:
- Settings → Secrets and variables → Actions → New repository secret
- 添加:
SSH_HOST = your-server-ip
# 服务器IPSSH_USER = your-username
# 服务器用户名SSH_KEY = 你的 SSH 私钥(用 cat ~/.ssh/id_rsa 复制粘贴)
# 你的开发机SSH私钥
在 github 的actions 里面 有 两个tab: secrets 和 variables
- Secrets(机密信息) 👉 存放 敏感数据(如 SSH Key)
- Variables(变量) 👉 存放 普通变量(如路径、环境变量等)
:::tip
SSH_KEY 是你的开发机SSH私钥,而不是服务器的SSH私钥。还有是私钥不是公钥。
:::
如果你不会生成SSH私钥,可以参考这篇文章。
步骤 2:创建 GitHub Actions 工作流
在仓库根目录创建 .github/workflows/deploy.yml
文件:
1 | name: Deploy to Server |
步骤 3(可选):添加环境变量
上面代码里面,我们用到了 3 个环境变量:
PROJECT_DIR = /var/www/your-project-name
# 你的项目目录DEPLOY_DIR = /var/www/public/your-project-name
# 部署到服务器的目录SOURCE_DIR = /var/www/your-project-name/dist
# 构建产物目录
如果你有 不敏感的环境变量,可以添加到 Variables(变量):
进入 Settings → Secrets and variables → Actions → Variables
点击 New repository variable
添加如下内容(可选):
PROJECT_DIR = /var/www/your-project-name
# 你的项目目录DEPLOY_DIR = /var/www/public/your-project-name
# 部署到服务器的目录SOURCE_DIR = /var/www/your-project-name/dist
# 构建产物目录
:::tip
PROJECT_DIR 是你的项目目录,DEPLOY_DIR 是你的部署目录。SOURCE_DIR 是你的构建产物目录。
这些都是针对服务器的目录。 不是你的本地目录。
:::
步骤 4:查看 GitHub Actions 运行状态
- 进入 GitHub 仓库
- 点击 “Actions” 标签
- 你会看到 Deploy to Server 的运行记录
- 如果部署失败,点击进日志查看具体错误信息
总结
通过以上步骤,你就可以实现 GitHub Actions 自动化部署到服务器了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 sharpmind.tech!