本文将实践使用 Github Actions 创建发布流,实现:利用 Git 本地书写完成文章,推送至 Github 远程库后,自动发布至服务器(腾讯云)。DeL无知

 环境

腾讯云轻量应用服务器,Github,Hexo,RsyncDeL无知

 思路

总体思路就是将原有的 hexo 构建和部署利用 Github Actions去代替。DeL无知

 创建 Hexo 博客项目

Hexo 是基于 NodeJs 的博客框架,你可以在 Hexo 官网 查看更多信息以及使用教程。DeL无知

首先打开命令行,输入 npm install -g hexo-cli 安装 Hexo-Cli,以便之后可以在命令行直接使用 Hexo;完成之后在命令行输入 hexo -v 查看安装情况,如下图。
hexo-vDeL无知

创建项目 hexo init my-hexo-project,这个过程会自动安装依赖包。DeL无知

安装完成后,在当前目录下 cd my-hexo-project 切换至 hexo 项目目录, hexo generate 将会把网站的静态内容生成于的 /public 目录, hexo server -s 在本地启动,分发 /public 下的内容,访问 http://localhost:4000 查看。
hexo网站DeL无知

很好,Hexo 已经成功启动!DeL无知

 手动部署至腾讯云

将本地项目打包上传至腾讯云服务器。DeL无知

在服务器上新建 my-hexo-project 文件夹,将文件解压复制到该目录中,项目根目录执行 hexo server -s -p 9008DeL无知

1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">1</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">2</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">3</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">4</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">5</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">6</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">7</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">8</span><br>
1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 打包 zip 并上传至服务器的 /home/baoxuebin/my-hexo-project 目录下,node_modules/可以不用打包,这里使用 scp 进行文件传输</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">scp ./project.zip hexo@81.69.252.147:/home/baoxuebin/my-hexo-project</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 服务器端的命令:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 解压</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">mkdir my-hexo-project & unzip project.zip</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 在 9008 端口启动项目</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">hexo server -s -p 9008</span><br>

浏览器访问 http://81.69.252.147:9008/ 查看。DeL无知

之后所引入的 Github Actions 其实就是代替这一步骤。DeL无知

 创建仓库

Github Actions 基于 Github 的仓库,所以第一步将 Hexo 网站代码同步至 Github。DeL无知

在本地 hexo 项目(my-hexo-project)根目录下初始化 Git 仓库,并将本地内容提交,如果你对 Git 不熟悉,参考:[Git教程 - 廖雪峰的官方网站](Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com))。DeL无知

之后在 Github 创建一个项目:DeL无知

创建仓库DeL无知

如图填写完成仓库名和描述后,点击 Create repository 创建。然后依照提示内容将本地关联远程库并推送。完整命令如下:DeL无知

1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">1</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">2</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">3</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">4</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">5</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">6</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">7</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">8</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">9</span><br>
1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 创建 Git 仓库</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">git init</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 提交本地内容</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">git add .</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">git commit -m "init project"</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 关联远程库,这里将 your_repository 改为你自己的远程仓库地址</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">git remote add origin your_repository.git</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="meta" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 153); font-weight: bold;">#</span><span class="bash" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"> 将本地内容推送至远程库</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">git push --set-upstream origin master</span><br>

 设置 Github Actions

让我们回到 Github 的仓库首页,找到 Actions,点击 set up a workflow yourself,进入 workflow 的编辑页面,如下图:DeL无知

workflowDeL无知

将文件名称修改为 hexo_deploy.yml,并将下面内容复制到编辑区。DeL无知

1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">1</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">2</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">3</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">4</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">5</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">6</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">7</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">8</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">9</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">10</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">11</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">12</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">13</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">14</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">15</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">16</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">17</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">18</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">19</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">20</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">21</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">22</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">23</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">24</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">25</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">26</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">27</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">28</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">29</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">30</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">31</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">32</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">33</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">34</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">35</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">36</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">37</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">38</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">39</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">40</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">41</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">42</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">43</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">44</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">45</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">46</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">47</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">48</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">49</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">50</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">51</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">52</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">53</span><br>
1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 工作流名称</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">name:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">hexo-deploy-ci</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 控制工作流的生效条件,这里设置为 分支 master 有新的推送时触发</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">on:</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">push:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">    <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">branches:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">master</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 条件生效后要执行的任务</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">jobs:</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 这里是单个任务</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">build:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">    <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 任务的执行类型</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">    <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">runs-on:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">ubuntu-latest</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">    <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 任务执行步骤</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">    <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">steps:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 检出仓库分支</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">name:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Checkout</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Repository</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">master</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">branch</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">uses:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">actions/checkout@v2</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 指定 Node 版本</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">name:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Setup</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Node.js</span> <span class="number" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(0, 128, 128);">12.</span><span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">x</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">uses:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">actions/setup-node@master</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">with:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">node-version:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">"12.x"</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      </span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 安装代码需要的依赖</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">name:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Install</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Dependencies</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">run:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">|</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">npm</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">install</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">hexo-cli</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">-g</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">npm</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">install</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      </span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 利用 hexo 生成静态页面</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">name:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Generate</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">Page</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">run:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">|</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">hexo</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">g</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      </span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 使用 rsync 将 public 文件夹传输至至服务器</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">name:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">rsync</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">deployments</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">uses:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">burnett01/rsync-deployments@4.1</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">        <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">with:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 这里是 rsync 的参数 switches: -avzh --delete --exclude="" --include="" --filter=""</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">switches:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">-avzr</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">--delete</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 要同步的文件夹</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">path:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">public/</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 服务器传输至的目录,上文中的 /home/baoxuebin/my-hexo-project/public</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">remote_path:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">你的服务器上传地址</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">remote_host:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">修改为你的服务器地址</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">remote_user:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">rsync</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">用户</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 密钥作为敏感信息,请勿直接使用;可以在 Github 仓库页面>>Settings>>secrets 添加</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">          <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">remote_key:</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">${{</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">secrets.TENCENT_CLOUD_PRIVATE_KEY</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">}}</span></span><br>

设置 Secrets,Name 输入 TENCENT_CLOUD_PRIVATE_KEY,Value 输入你的 SSH 私钥。DeL无知

actions_secrestDeL无知

腾讯云怎么获取 SSH 登录密钥?DeL无知

打开腾讯云控制台,在服务器页面,点击进入“密钥”页面>>创建密钥,保存生成的私钥;
然后再在服务器>>实例信息>>密钥>>点击“绑定密钥”,注意绑定密钥时,服务器必须处于关闭状态。DeL无知

 尝试发布

接下来,我们尝试修改 Hello-World.md 如下,并推送至 Github。DeL无知

1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">1</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">2</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">3</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">4</span><br>
1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">---</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">title: 发布测试</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">---</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">文章发布成功 :-)</span><br>

提交成功后,稍等片刻,重新访问 http://81.69.252.147:9008/ ,内容已经更新。DeL无知

SuccessDeL无知

 草稿分支

如果你不想每次提交都重新部署,可以新建一个 draft 分支来保存未完成的草稿;之后需要发布时,将 draft 合并至 master 并推送到 Github 完成发布。DeL无知

 在线创作

利用 Github 的在线编辑可以轻松地实现博客的在线编辑。在每篇博客的页面添加一个指向 Github 源代码编辑的链接(如本页面顶部右侧的 ✍️编辑)。DeL无知

commitDeL无知

打开 Github 的源代码编辑页面,下方的 Commit changes 区域可以选择 直接提交 或者 创建一个PR。
为了在新创建 PR 时 Github Actions 也会自动发布,(Github actions 监听 PR 的创建,会导致未审核的 PR 内容被发布,这里应该删除)
这里需要修改 workflow 代码如下:DeL无知

1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">1</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">2</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">3</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">4</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">5</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">6</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">7</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">8</span><br>
1
<span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">on:</span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">push:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">    <span class="attr" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">branches:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">      <span class="bullet" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 0, 115);">-</span> <span class="string" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(221, 17, 68);">master</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># 创建 PR 的触发</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;"># pull_request:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;">#   branches:</span></span><br><span class="line" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">  <span class="comment" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); color: rgb(153, 153, 136); font-style: italic;">#     - master</span></span><br>

 参考文章

Github Docs
CSDN: GitHub Actions + Hexo实现在线写作
阮一峰:GitHub Actions 入门教程DeL无知