github actions 自动化部署
Apr 05, 2024 ·
4 Min Read
引言
工具都是懒人发明的。
之前的网站是 vuepress
到现在的 vitepress
生成静态页面,部署都是手动部署,因为我更新的不算频繁,因此都忍下来了。在周末在搞服务器,终于忍无可忍,顺便把它 “搞了”——实现自动化部署。

代码是托管在 github
上,因此使用 Github Actions 自动化工作流程。
寻找一些辅助 actions
可以从 🏪 workflow 扩展 找。
准备
先简单了解一下 Github Actions
语法。
name
:workflow 的名称。on
:触发 workflow 执行 event 的名称。例如push
推送时候;pull_request
拉取请求。jobs
:作业,一个 workflow 由一个或多个jobs
组成。- 每一个
job
都需要有一个唯一标识,例jobs.<job_id>
。 - 使用
jobs.<job_id>.name
为作业设置名称,该名称显示在 GitHub UI 中。
- 每一个
steps
:每个 job 由多个 step 构成,它会从上至下依次执行。它可以运行 commands 命令行命令、step tasks 环境配置命令、action(官方或开发者共享的action)。
大致就由这几部分组成,更多配置或语法可以查阅 官方文档 ,或者这里推荐一篇文章 Github Action 精华指南 。
实践
第一步,在项目根目录 创建 .github/workflows
文件夹,然后在里面创建一个 xxx.yml
文件
mkdir -p .github/workflowscd ./.github/workflowstouch xxx.yml

第二步,案例配置
# 案例配置# 工作流名称name: 'deploy'
on: # 推送触发器,例如:这里表示的是 监听 master 分支推送,而且只有 paths 路径下的文件有修改的推送才会执行这个 workflows push: branches: - master paths: - 'docs/**/**' - 'package.json'
# 作业jobs: # job id build-and-deploy: # 运行环境,意味着作业将在 GitHub 托管的最新版本的 Ubuntu Linux 上运行 runs-on: ubuntu-latest steps: # 检查分支 @v2 代表 actions 的版本,官方建议写上。 - uses: actions/checkout@v2 # 安装node - uses: actions/setup-node@v3 with: # 版本 node-version: 14 cache: yarn - run: yarn install --frozen-lockfile # 打包 - name: Build run: yarn build # 部署到云服务器 - name: Deploy to Server # 使用 别人共享的 action,文档https://github.com/marketplace/actions/ssh-deploy uses: easingthemes/ssh-deploy@main env: # ssh 私钥 SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} ARGS: "-rltgoDzvO --delete" # 源目录,相对于$GITHUB_WORKSPACE根目录的路径 SOURCE: docs/.vitepress/dist/ # 主机,比如 127.0.0.1 REMOTE_HOST: ${{ secrets.REMOTE_HOST }} # 登录名,比如 root REMOTE_USER: ${{ secrets.REMOTE_USER }} # 部署目标路径(相对于服务器) 比如 /data TARGET: ${{ secrets.REMOTE_TARGET }} # 指定排除上传的文件 EXCLUDE: "/node_modules/"

提示
不要直接在工作流 workflow
写入重要信息,比如密码,ssh等。
使用 github secrets
设置环境变量进行传入敏感信息,例如案例中的 secrets.SSH_PRIVATE_KEY
。
github secrets 设置
xxx项目👉Settings👉Secrets👉Actions
有时候会遇到这种错误时,
- 首先验证你的 ssh 或 rsync 配置是否有错。
- 检查你的公钥是否已经放到
authorized_keys
文件中,假如你是使用ssh-keygen -m PEM -t rsa -b 4096
生成的密钥,可以通过cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
复制到文件中。

Last edited Feb 15