github 私有库 创建pages的 最简单的保姆级教程

# github 私有库 创建pages的 最简单的保姆级教程

本站 使用的mdbook ,其他 hexo 或者gitbook 都一样 一样

2022-10-22 最终放弃简单易用的mdbook 换到 golang开发的 hugo上,

关于 hugo私有库存 部署脚本 请查看 在github上快速部署一个基于hugo的个人博客

首先第一步 是 创建一个 私有库,用来存放md文件 dev.leiyanhui.com-src 分支也只需要一个main

再创建一个公开库 dev.leiyanhui.com-page 用来存放 生成后的html

这两个库 可以在不同的帐号下,后面你自己替换这两个库名称,还有邮箱和用户名

# 原理

dev.leiyanhui.com-page 打开github page 服务

dev.leiyanhui.com-src 用 github actions 自动生成html并推送到 dev.leiyanhui.com-src

# 首先你可能需要先搞定自动生产

先搞定 md到html的静态生成,无论是mdbook 还是 hexo,文章末尾 有提供 mdbook的 自动脚本 mdbook-公开库自己部署到自己.yml

放到 dev.leiyanhui.com-src/.github/workflows/ 文件后缀为yml 文件名无所谓

本文默认 你已经会弄这个,如果不明白查看这个文章

# 然后准备自动推送相关的

经过我测试https 推送 目前是存在问题的,还是建议 使用ssh推送

# 在本机 先弄一套密钥

    ssh-keygen -t rsa -C "joyanhui@qq.com"
    cd ~/.ssh 
    cat id_rsa  #这是私钥 记好
    cat id_rsa.pub #这是公钥 记好

win环境下自己搞定

# 再公开库 添加公钥

打开 公开库 dev.leiyanhui.com-page setting Deploy keys

链接: https://github.com/joyanhui/dev.leiyanhui.com-page/settings/keys

添加一个 Add new ,把前面 公钥 id_rsa.pub 的内容粘贴进来 名称随意

# 在私有库 添加一个环境变量 存 私钥

打开 私有库 dev.leiyanhui.com-page setting secrets actions

链接: https://github.com/joyanhui/dev.leiyanhui.com-src/settings/secrets/actions

添加一个 New repository secret 大概意思 就是 加密变量

名称随意,我这里使用 名称 FOR_PAGE_SSHKEY 内容填写 私钥id_rsa的内容

# 修改私有库的自动部署actions workflows文件

编辑 私有库 mdbook-共有库自己部署到自己.yml 文件 在 env:添加 一个环境变量

    FOR_PAGE_SSHKEY: ${{ secrets.FOR_PAGE_SSHKEY }}

在 git commit 后面添加几行命令 自动部署私钥

    mkdir -p ~/.ssh/
    echo "$FOR_PAGE_SSHKEY" > ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    ssh-keyscan github.com >> ~/.ssh/known_hosts

在 git push origin 前面添加一个远程git

    git remote rm origin
    git remote add origin git@github.com:joyanhui/dev.leiyanhui.com-page.git

这就可以了

在合适的位置 还要 添加一个 删除 rm -rf .github 不然 公开库 也自动执行这个yml了,然后肯定会失败

完整的配置文件 参考文末 mdbook-私有库自动部署到公开库pages.yml

# 进阶

  • 提升国内网访问
    • 网站访问
      我用的dnspods 境外解析到 xxx.github.com 境内解析到 国内cdn cdn再指向xxx.github.com
    • src文件在线编辑和上传
      • gitcode 也有 DevOps 可以用
      • gitee 自动推送到 github gitee默认提供 同步功能,目前还是免费的,但是gitee的md编辑器有点难用!
      • coding 自动推送到 github coding 有集成服务Jenkins 并且有香港和美国服务器让你运行集成服务代码,每个提供免费300分钟的执行时间,出发你一天24小时都在写都在提交 不然其实也够用。

# hugo的自动部署

查看这里

# 我在用的 github/workflows actions 脚本

dev.leiyanhui.com-src/.github/workflows/mdbook-公开库自己部署到自己.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
41
42
name: mdbook
on:
  push:
    branches:
      - main

jobs:
  mdbook_build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - name: 安装 mdbook
      run: |
        mkdir mdbook
        curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
        echo `pwd`/mdbook >> $GITHUB_PATH
    - name: 编译 mdbook
      run: |
        echo "编译"
        mdbook build
        echo "分支到 gh-pages"
        git worktree add gh-pages
        #mkdir  gh-pages
        cd  gh-pages
        echo "删除 ref 以避免保留历史记录"
        git update-ref -d refs/heads/gh-pages
        rm -rf *
        mv ../book/* .
        echo "处理独立域名的绑定 CNAME文件"
        echo "dev.leiyanhui.com" >> CNAME
        
        echo  "推送到分支"
        git config user.name "joyanhui"
        git config user.email "joyanhui@qq.com"
        git init
        #git checkout -b main
        git add -A
        git commit -m "自动生成  $GITHUB_SHA to gh-pages"
        echo "推送 "
        git push origin gh-pages -f -q

dev.leiyanhui.com-src/.github/workflows/mdbook-私有库自动部署到公开库pages.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
41
42
43
44
45
46
47
48
49
50
51
52
53
name: mdbook
on:
  push:
    branches:
      - main

jobs:
  mdbook_build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - name: 安装 mdbook
      run: |
        mkdir mdbook
        curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
        echo `pwd`/mdbook >> $GITHUB_PATH
    - name: 编译 mdbook
      env:
        FOR_PAGE_SSHKEY: ${{ secrets.FOR_PAGE_SSHKEY }}
      run: |
        echo "编译"
        mdbook build
        echo "分支到 gh-pages"
        git worktree add gh-pages
        #mkdir  gh-pages
        cd  gh-pages
        echo "删除 ref 以避免保留历史记录"
        git update-ref -d refs/heads/gh-pages
        rm -rf *
        mv ../book/* .
        echo "处理独立域名的绑定 CNAME文件"
        echo "dev.leiyanhui.com" >> CNAME
        echo  "推送到分支"
        git config user.name "joyanhui"
        git config user.email "joyanhui@qq.com"
        git init
        #git checkout -b main
        git add -A
        git commit -m "自动生成  $GITHUB_SHA to gh-pages"
        echo "远程"
        
        mkdir -p ~/.ssh/
        echo "$FOR_PAGE_SSHKEY" > ~/.ssh/id_rsa
        chmod 600 ~/.ssh/id_rsa
        ssh-keyscan github.com >> ~/.ssh/known_hosts
        
        git remote rm origin
        git remote add origin git@github.com:joyanhui/dev.leiyanhui.com-page.git
       
        #推送
        git push origin gh-pages:main -f -q
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计