简介
前几天写了一篇Windows环境安装MongoDB 文章,在个人网站上https://jobbym.github.io/ 发现没有自动部署,于是去查找了一下原因。
将这次处理过程记录下来,为后续的维护留下线索。下面是之前利用Travis CI 自动部署Hexo 到GitHub Pages 时,自己记录的相关文章。
准备环境
由于时全新的Windows 10 系统的电脑,部署环境需要重新搭建
- Windows 10 系统
- Git
- Nodejs
处理过程
首先登录到Travis CI 上查看错误原因
1 | 31.62s$ hexo g |
一、看到这个问题首先时怀疑项目依赖的问题,需要更新依赖
使用npm-check 来检查npm依赖包是否有更新,错误以及不在使用的,我们也可以使用npm-check进行包的更新
安装npm-check:
1 | npm install -g npm-check |
检查npm包的状态:
1 | npm-check -u -g |
二、部署之后,Travis CI 仍然有问题
1 | Warning: Permanently added the RSA host key for IP address '140.82.113.4' to the list of known hosts. |
提示没有权限进行部署,查看了一下https://github.com/JobbyM/JobbyM.github.io/settings/keys 没有相关的Deploy Key,可能是自己不小心删除了,所以重新需要生成一个。
使用ssh-keygen 制作SSH Key,供GitHub 当作Deploy key 使用
1 | ssh-keygen -t rsa -C "songzhipengmune@gmail.com" |
三、Deploy key 重新生成了,那么需要重新加密相应的Private Key。
之前利用Travis CI 自动部署Hexo 到GitHub Pages 上 是使用在Windows 上安装Ubuntu 虚拟机进行处理的,现在可以使用Windows10 访问Ubuntu 子系统(WSL)来进行处理。
四、安装完Ubuntu 需要做的第一件事,就是换源。
- 备份原始源文件sources.list
1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
- 编辑源文件sources.list
1
sudo vi /etc/apt/sources.list
- 将官方源
http://archive.ubuntu.com/ubuntu/
替换为阿里源http://mirrors.aliyun.com/ubuntu/
1
:%s/archive.ubuntu/mirrrors.aliyun/g
- 之后执行保存命令
1
:wq
- 修改完软件源后,更新软件列表和软件
1
2sudo apt update
sudo apt upgrade
五、之后安装travis
- 需要安装
ruby
ruby-dev
来通过gem
安装travis
1
2sudo apt-get install ruby
sudo apt-get install ruby-dev ruby
也需要换源
查看源列表1
gem sources -l
- 更新源
1
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
- 更新源的缓存
1
gem sources -u
- 安装travis
1
sudo gem install travis
- 提示错误
1
2
六、需要搭建C/C++编译开发环境
- 安装gcc
1
sudo apt-get install gcc
- 安装g++
1
sudo apt-get install g++
- 需要安装make
1
sudo apt-get install make
- 之后再安装travis 就成功了
七、之后就是使用Travis
- 使用命令工具登录Travis
1
jobbym@ubuntu:~/learn/blog/.travis$ travis login --auto
- Trivas 将前面生成的Private key 的文件id_rsa, 加密生成id_rsa.enc, 并自动在.travis.yml 的before_install 中,自动插入解密指令,-r 选项用来指定repos 名称
1
jobbym@ubuntu:~/learn/blog/.travis$ travis encrypt-file id_rsa --add -r JobbyM/blog
- ** 注意** 这里应该将
JobbyM/blog
修改为JobbyM/JobbyM.github.io
,否则在自动部署时候,会提示如下错误1
2
30.01s$ openssl aes-256-cbc -K $encrypted_f217180e22ee_key -iv $encrypted_f217180e22ee_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d
iv undefined
The command "openssl aes-256-cbc -K $encrypted_f217180e22ee_key -iv $encrypted_f217180e22ee_iv -in .travis/id_rsa.enc -out ~/.ssh/id_rsa -d" failed and exited with 1 during .
八、之后再次进行部署
- 提示了如下错误
1
2
3
4$ hexo algolia
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
AlgoliaSearchError: Please provide an API key. Usage: algoliasearch(applicationID, apiKey, opts)
at AlgoliaSearchNodeJS.AlgoliaSearchCore - 大概是说缺少API key,查看了文档http://theme-next.iissnan.com/third-party-services.html#algolia-search,提示需要将Search-Only API key 设置为环境变量
1
2$ export HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key
$ hexo algolia - 修改_config.yml 为如下
1
2
3
4
5# Algolia
algolia:
applicationID: 'SV57WJ53OS'
indexName: 'jobbymsblog'
chunkSize: 5000 - 修改
.travis.yml
,在before_install 之前设置环境变量1
2before_install:
- export HEXO_ALGOLIA_INDEXING_KEY=$hexo_aloglia - 在https://www.travis-ci.org/github/JobbyM/JobbyM.github.io/settings 这里进行新增一个变量
hexo_aloglia
- 这个变量的值为Admin API Key 的值,而不是Search-Only API Key 的值。在https://www.algolia.com/apps/SV57WJ53OS/api-keys/all 在这里进行查看相关值
- 使用Search-Only API Key 会提示如下错误信息, 没有权限去更新对象
1
2
3
4
5
6
7$ hexo algolia
INFO [hexo-algolia] Testing HEXO_ALGOLIA_INDEXING_KEY permissions.
INFO Start processing
INFO [hexo-algolia] 191 records to index (post, page).
INFO [hexo-algolia] Indexing chunk 1 of 4 (50 records)
ERROR [hexo-algolia] Not enough rights to update an object near line:1 column:1539
INFO [hexo-algolia] Indexing chunk 2 of 4 (50 records)