hexo|优雅的将hexo部署到github和coding
原文发表于我的博客, 特此做版权声明1. 前言 上次写了篇文章 使用github action同时部署hexo到github和coding最优雅的方式,从实现原理的角度做了介绍,由于实现的目标比较多,所以看起来比较复杂,这次我们不讲原理,仅仅按实现目标来介绍如何配置。
CSDN: 优雅的将hexo到github和coding
Noosphere.site: 优雅的将hexo到github和coding
1.1 目标 先说我们要实现的目标,然后再按目标来介绍方法
- hexo的source存放在独立私有库jiuhao
- 生成的静态文件存放在github和coding独立的库
- 本地可以通过
hexo d -g
一个命令一次性部署到github和coding - 可以通过
git push
推送到github的surce仓库后,由action触发部署到github和coding的静态仓库 - 同时实现3和4,只需要配置一次
_config.yml
。而不需要在action里面写死目标静态仓库的地址,方便维护 - 支持多个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 账号,可以不需要理会这个目标。
- 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,不方便重用。
[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就好。那么配置很简单
- 配置hexo的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'
- 配置github CI Actions
name: CIon:
push:
branches: [ master ]
pull_request:
branches: [ master ]jobs:
build-and-deploy:
runs-on: ubuntu-latest
container:
image: node:13-alpinesteps:
- 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 }}"
- 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的配置入口是 {目标仓库}->设置->部署公钥->新建部署公钥
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
,一般来说,这样作无非是这几种目的- 区分私人的id和工作用的key
- 不要直接使用id_rsa,减少安全隐患
- 同时维护多个隔离的hexo站点
- 生成独立的key用于部署(这里的key命名是nooshpere-coder)
ssh-keygen noosphere-coder
- 告诉ssh进行路由, 在终端执行下面命令,生成一份config配置到
/home/$USER/.ssh
目录
cat << EOF > /home/$USER/.ssh/config
Host 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-coder
EOF
- ssh key 配置,和上面的
ssh key 配置
配置步骤一样,只需要把id_rsa改成noosphere-coder的内容就行了。 - 把私有仓库的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封了百度的爬虫)
这个配置,实在没什么好讲的,直接上图吧
- DSN服务商的控制面板配置
- github的域名配置
- coding的的域名配置
原文发布于:【hexo|优雅的将hexo部署到github和coding】
CSDN: 优雅的将hexo到github和coding
我的博客 优雅的将hexo到github和coding - Noosphere
?公众号 优雅的将hexo到github和coding
关注公众号和我互动
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量