SSH的知识&在线部署踩坑相关

对不起我是小丑,虽然能跑了但hexo g 出来的网页是空白的,推测是插件环境没有搞好导致theme出不来,所以只有空白页面……

自动化之路任重道远啊……

挖坑,有空来填吧


终于跑出来了!太激动了,这次更新值得新开一贴!

痛点

  1. 每次本地发布都需要

    1
    2
    3
    hexo clean
    hexo g
    hexo d

    再等github慢悠悠发布,一点都不优雅

  2. 多台设备间无法同步

  3. 需要手动备份

目标

  1. 能在线编辑、部署
  2. 完全不需要本地参与

具体原理

先弄懂本地发布的原理

一种方法是token,我本地用的就是token,走https。

当然也可以用ssh,因为之前接触过,所以后边都用ssh了。

本地仓库与github仓库靠ssh通信。本地有私钥,github上要填写公钥,这样才能连接。

github ssh相关问题

注意啊,帖子里的setting是头像-setting,不是仓库里的setting,我不说是谁找了半天没找到ssh选项……

推广到在线部署

所以要在线上配置一个与本地类似的环境,就可以模拟本地的发布。

用到了action的功能,在每次push后自动触发。

所以核心是在源码仓库放私钥!

流程

  1. 新建仓库,把本地源文件push上去
    1
    2
    3
    4
    5
    6
    7
    git init
    git add .
    git commit -m "111"
    git branch -M main
    git remote add origin git@github.com:KLBBLB/KLBBLB.github.io.git
    git push -f origin main

    2.仓库的setting——secrets——actions——new repository secret

添加三个环境变量,是后面代码要调用的

变量 内容
GITME 邮箱
GITNAME 用户名
HEXO_DEPLOY_PRI 私钥
  1. .gitinore\workflows下新建.yml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
name: HEXO自动部署

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x]

steps:
- uses: actions/checkout@v1

- name: 使用 Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}

- name: 配置环境
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "${{secrets.GITNAME}}"
git config --global user.email "${{secrets.GITME}}"
- name: 安装依赖项
run: |
npm i -g hexo-cli
npm i
- name: 部署 hexo
run: |
hexo clean && hexo generate && hexo deploy


4. 踩坑

  • 有语法错误不会报错,但是actions不会触发,以此为依据说明有地方错了
  • 报错fatal: could not read Username for 'https://github.com': No such device or address,把源文件里_config.yml的发布地址由https开头改为git@github.com:10wen/10wen.github.io.git的ssh地址。这确实是应该提早就想到的,本地的当时使用token的形式发布,这里改为了ssh,当然要改地址!

碎碎念

关于公钥私钥,一开始没有理解,然后突然灵光乍现……可恶啊超算学的东西全忘了……

看来还是要温故而知新啊


SSH的知识&在线部署踩坑相关
http://zjuklbb.top/2023/06/30/SSH的知识&在线部署踩坑相关/
作者
KLBB
发布于
2023年6月30日
许可协议