## Github Actions自动部署
> [!NOTE] > > 此项目的Github Actions监听`blog-content`分支中`src/blog`和`src/friends`两个目录的`git push`操作,两个目录有更新则触发构建流水线。 > [!IMPORTANT] > > 需要使用这个功能请自行Fork一份代码到自己的仓库,在你自己的仓库才能跑流水线。 ### 零、新建一个分支 在`master`的基础上新建一个名为`blog-content`的分支,以后新的文章请推送到这个分支里。 ### 一、设置SSH密钥 在仓库的`Settings > Secrets and variables > Actions`中,添加三个`Repository secrets`,分别为: | 密钥名 | 用途 | | -------------------- | ---------------------------- | | `DEPLOY_KNOWN_HOSTS` | 用于让Gihub CI识别目标服务器 | | `DEPLOY_SSH_KEY` | 用于登录目标服务器 | | `ENV_FILE` | 私有环境变量 | #### 1.`DEPLOY_KNOWN_HOSTS` 在终端执行命令 ```shell ssh-keyscan -H <你的服务器IP> ``` 并将生成的所有内容放入该环境变量中 #### 2.`DEPLOY_SSH_KEY` 推荐在你本地新生成一把专门用于 GitHub 部署的 key 本地或服务器终端执行: ``` ssh-keygen -t ed25519 -C "github-actions-deploy" -f ~/.ssh/github_actions_deploy ``` 执行后会得到两个文件: ``` ~/.ssh/github_actions_deploy ~/.ssh/github_actions_deploy.pub ``` > **`github_actions_deploy`** → 私钥,填到 `DEPLOY_SSH_KEY` > > **`github_actions_deploy.pub`** → 公钥,要加到服务器上 ##### ① 设置Github私钥 查看私钥内容: ``` cat ~/.ssh/github_actions_deploy ``` 把完整输出复制到变量值中。 ##### ② 设置服务器公钥 随后,登录服务器终端,将`~/.ssh/github_actions_deploy.pub`中的内容添加到服务器的`~/.ssh/authorized_keys`,以实现Github CI访问服务器。 #### 3.`ENV_FILE` 这个变量用于生成构建所需的`.env`文件。 如果你已经设置好`.env`,它里面应该有如下内容 ```env GITHUB_TOKEN= GISCUS_REPO_OWNER= GISCUS_REPO_NAME= GISCUS_CATEGORY_ID= GISCUS_DATA_REPO_ID= ``` 如果你还没配置好或不知道这些是干什么的,请详见:[EnvVariables.md](EnvVariables.md) 直接把`.env`中的所有内容复制到变量值中。 ### 二、设置环境变量 同样,在`Settings > Secrets and variables > Actions`中,添加四个`Repository variables`,分别为: | 密钥名 | 内容 | | ------------- | -------------------------------------------------------- | | `DEPLOY_HOST` | 服务器IP地址,如`192.168.1.1` | | `DEPLOY_PATH` | 在服务器上的部署路径,如`/www/wwwroot/blog.cloverta.top` | | `DEPLOY_PORT` | 服务器SSH端口,一般是`22` | | `DEPLOY_USER` | 登录用户,例如`root` |