原文发表于我的博客, 特此做版权申明
CSDN: 优雅的将hexo到github和coding
Noosphere.site: 优雅的将hexo到github和coding

1. 前言

上次写了篇文章 应用github action同时部署hexo到github和coding最优雅的形式,从实现原理的角度做了介绍,因为实现的指标比拟多,所以看起来比较复杂,这次咱们不讲原理,仅仅按实现目标来介绍如何配置。

1.1 指标

先说咱们要实现的指标,而后再按指标来介绍办法

  1. hexo的source寄存在独立公有库jiuhao
  2. 生成的动态文件寄存在github和coding独立的库
  3. 本地能够通过 hexo d -g一个命令一次性部署到github和coding
  4. 能够通过git push推送到github的surce仓库后,由action触发部署到github和coding的动态仓库
  5. 同时实现3和4,只须要配置一次_config.yml。而不须要在action外面写死指标动态仓库的地址,不便保护
  6. 反对多个github账号,同时也反对多个coding账号

阐明:

  • 指标 1 把 source 放在独立的公有库是安全性思考
  • 指标 3 和 4 是不便能够应用两种办法都能达到部署的指标, 3 是手工部署, 4 是通过git push触发,比方 github 的 action 可能某些起因失败了,临时又没工夫去保护,那么我能够间接在本地hexo d -g部署就行
  • 指标5是实现3和4的时候,两种办法的指标仓库(publish repo)地址配置只须要一处保护,不须要扩散在 _config.yml 和 github action
  • 指标 6 是可选指标。 如果不须要辨别工作和私人用的github 账号,能够不须要理睬这个指标。

1.2 已有的解决方案剖析

为了达到下面这些指标,我找了一轮市面上各种各样的解决方案,没看到齐全符合要求的。次要问题包含

  • github action market上的hexo action没有反对同时部署到github和coding的action能够间接重用
  • github action market上已有的hexo action的deploy形式无非两种,一种是间接把指标(publish repo)仓库地址配置action,一种是间接应用source外面_config.yml的配置. 如果是前者,则意味着咱们须要吧publish repo写在两个中央,一个是本地的_config.yml一个是action。保护起来比拟麻烦。显著应该应用后者。
  • 其余的一些博客提到的办法外面,大多存在后面一点存在的问题,而且大多是间接在action里定制脚本,没有抽成action,不不便重用。

就这样,观摩了一轮,我决定fork一个github mark上的hexo action进去,按需要本人弄一个action,通过考查,[sma11black/hexo-action](https://github.com/sma11black/hexo-action)这个action比拟靠近需要,只须要简略革新就能够应用,怎么革新这里就不说了,{% post_link hexo-action-deploy-to-coding-and-multi-account 见上一篇文章%}

通过简略革新的action的仓库是 [noosphere-coder/hexo-action@master](https://github.com/noosphere-coder/hexo-action),上面咱们间接应用就好

2 注释

2.1 只实现目标1-5的配置

排除掉指标6,只须要是实现下面说的1-5的指标,也即是咱们能够应用咱们平时曾经在github和coding外面应用的ssh key就好。那么配置很简略

  1. 配置hexo的deploy

找到hexo根目录的_config.yml,而后配置deploy字段的内容如下

deploy:  type: 'git'  repo:     github: 'git@noosphere-coder.github.com:noosphere-coder/noosphere-coder.github.io.git'    coding: 'git@e.coding.net:noosphere/noosphere.git'  branch: 'master'
  1. 配置github CI Actions
name: CIon:  push:    branches: [ master ]  pull_request:    branches: [ master ]jobs:  build-and-deploy:    runs-on: ubuntu-latest    container:      image: node:13-alpine    steps:    - uses: actions/checkout@v1      with:        submodules: true         - name: Install Dependencies      run: |        npm install    - name: Deploy      id: deploy      uses: noosphere-coder/hexo-action@master      with:        deploy_key: ${{ secrets.DEPLOY_KEY }}        # user_name: your github username  # (or delete this input setting to use bot account)        # user_email: your github useremail  # (or delete this input setting to use bot account)        commit_msg: ${{ github.event.head_commit.message }}      - name: Get the output      run: |        echo "${{ steps.deploy.outputs.notify }}"
  1. ssh key 配置
    3.1 私钥配置: 把/home/$USER/ssh/id_rsa的内容复制进去,在入口: {公有库}->settings->Secrets->New secret,新建名为DEPLOY_KEY的key,退出id_rsa的内容
    3.2 公钥配置: 把/home/$USER/ssh/id_rsa.pub别离配置在github和coding的指标仓库

    • github的配置入口是 {指标仓库}->settings->Deploy keys->add deploy keys
    • coding的配置入口是 {指标仓库}->设置->部署公钥->新建部署公钥

至此,实现1-5指标的配置曾经实现,也就是,咱们能够别离用上面这两种形式都能够同时部署到github和coding

hexo g -d # 或者 hexo d -g

git push origin master

2.2 [可选,不须要能够跳过] 实现目标6:应用独立的ssh key来部署(也就是能够新建多个的github账号来部署你的hexo站点)

指标6是采纳另外的ssh key,而不是间接应用/home/$USER/ssh/id_rsa,一般来说,这样作无非是这几种目标

  1. 辨别私人的id和工作用的key
  2. 不要间接应用id_rsa,缩小安全隐患
  3. 同时保护多个隔离的hexo站点

为了达到这个目标,咱们须要通知ssh,在碰到这个hexo的仓库的时候,请应用独立的 key。上面咱们来实现这个指标

  1. 生成独立的key用于部署(这里的key命名是nooshpere-coder)
ssh-keygen noosphere-coder
  1. 通知ssh进行路由, 在终端执行上面命令,生成一份config配置到/home/$USER/.ssh目录
cat << EOF > /home/$USER/.ssh/configHost github.com      HostName github.com      PreferredAuthentications publickey      IdentityFile /home/$USER/.ssh/id_rsaHost noosphere-coder.github.com      HostName github.com      PreferredAuthentications publickey     IdentityFile /home/$USER/.ssh/noosphere-coderHost e.coding.net      HostName e.coding.net      PreferredAuthentications publickey      IdentityFile /home/$USER/.ssh/id_rsa Host noosphere-coder.coding.net      HostName e.coding.net      PreferredAuthentications publickey      IdentityFile /home/$USER/.ssh/noosphere-coderEOF
  1. ssh key 配置,和下面的ssh key 配置 配置步骤一样,只须要把id_rsa改成noosphere-coder的内容就行了。
  2. 把公有仓库的remote改掉
git remote set-url origin git@noosphere-coder.github.com:noosphere-coder/hexo-action.git
以上 noosphere-coder请替换成你本人的仓库名称

至此,指标6曾经实现,这个时候,你再去执行git push的时候,ssh会主动应用独立的key而不会应用默认的id_rsa.

3. DNS双线配置

同时部署到github和coding次要是为了国内拜访和国外拜访流量辨别,一个为了速度,二者为了搜索引擎收录(github封了百度的爬虫)

这个配置,切实没什么好讲的,间接上图吧

  1. DSN服务商的控制面板配置

  1. github的域名配置

  1. coding的的域名配置

原文公布于:
我的博客 优雅的将hexo到github和coding - Noosphere
公众号 优雅的将hexo到github和coding


关注公众号和我互动