原文发表于我的博客, 特此做版权申明
CSDN: 优雅的将hexo到github和coding
Noosphere.site: 优雅的将hexo到github和coding
1. 前言
上次写了篇文章 应用github action同时部署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 账号,能够不须要理睬这个指标。
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就好。那么配置很简略
- 配置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'
- 配置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 }}"
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
,一般来说,这样作无非是这几种目标
- 辨别私人的id和工作用的key
- 不要间接应用id_rsa,缩小安全隐患
- 同时保护多个隔离的hexo站点
为了达到这个目标,咱们须要通知ssh,在碰到这个hexo的仓库的时候,请应用独立的 key。上面咱们来实现这个指标
- 生成独立的key用于部署(这里的key命名是nooshpere-coder)
ssh-keygen noosphere-coder
- 通知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
- 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到github和coding - Noosphere
公众号 优雅的将hexo到github和coding
关注公众号和我互动