zoukankan      html  css  js  c++  java
  • 使用Travis CI 自动部署Hexo 之后续维护

    简介

    前几天写了一篇Windows环境安装MongoDB Windows环境安装MongoDB文章,在个人网站上https://jobbym.github.io/ 发现没有自动部署,于是去查找了一下原因。

    将这次处理过程记录下来,为后续的维护留下线索。下面是之前利用Travis CI 自动部署Hexo 到GitHub Pages 时,自己记录的相关文章。

    1. Travis-CI-基础入门
    2. Hexo集成Algolia搜索插件
    3. 利用Travis CI 自动部署Hexo 到GitHub Pages 上

    准备环境

    由于时全新的Windows 10 系统的电脑,部署环境需要重新搭建

    1. Windows 10 系统
    2. Git
    3. Nodejs

    处理过程

    首先登录到Travis CI 上查看错误原因

    31.62s$ hexo g
    INFO  Start processing
    INFO  Files loaded in 8.31 s
    ERROR Asset render failed: css/main.css
    /home/travis/build/JobbyM/JobbyM.github.io/node_modules/stylus/node_modules/mkdirp/lib/opts-arg.js:7
        opts = { mode: 0o777, fs, ...opts }
                                  ^^^
    SyntaxError: Unexpected token ...
        at createScript (vm.js:56:10)
        at Object.runInThisContext (vm.js:97:10)
    

    一、看到这个问题首先时怀疑项目依赖的问题,需要更新依赖

    使用npm-check 来检查npm依赖包是否有更新,错误以及不在使用的,我们也可以使用npm-check进行包的更新
    安装npm-check:

    npm install -g npm-check
    

    检查npm包的状态:

    npm-check -u -g
    

    二、部署之后,Travis CI 仍然有问题

    Warning: Permanently added the RSA host key for IP address '140.82.113.4' to the list of known hosts.
    Permission denied (publickey).
    fatal: Could not read from remote repository.
    Please make sure you have the correct access rights
    and the repository exists.
    


    提示没有权限进行部署,查看了一下https://github.com/JobbyM/JobbyM.github.io/settings/keys 没有相关的Deploy Key,可能是自己不小心删除了,所以重新需要生成一个。

    使用ssh-keygen 制作SSH Key,供GitHub 当作Deploy key 使用

    ssh-keygen -t rsa -C "songzhipengmune@gmail.com"
    

    三、Deploy key 重新生成了,那么需要重新加密相应的Private Key。

    之前{% post_link continuous-deployment-to-github-with-travis 利用Travis CI 自动部署Hexo 到GitHub Pages 上 %} 是使用在Windows 上安装Ubuntu 虚拟机进行处理的,现在可以使用Windows10 访问Ubuntu 子系统(WSL)来进行处理。

    四、安装完Ubuntu 需要做的第一件事,就是换源。

    1. 备份原始源文件sources.list
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    
    1. 编辑源文件sources.list
    sudo vi /etc/apt/sources.list
    
    1. 将官方源http://archive.ubuntu.com/ubuntu/ 替换为阿里源http://mirrors.aliyun.com/ubuntu/
    :%s/archive.ubuntu/mirrrors.aliyun/g
    
    1. 之后执行保存命令
    :wq
    
    1. 修改完软件源后,更新软件列表和软件
    sudo apt update
    sudo apt upgrade
    

    五、之后安装travis

    1. 需要安装ruby ruby-dev 来通过gem 安装travis
    sudo apt-get install ruby
    sudo apt-get install ruby-dev
    
    1. ruby 也需要换源
      查看源列表
    gem sources -l
    
    1. 更新源
    gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
    
    1. 更新源的缓存
    gem sources -u
    
    1. 安装travis
    sudo gem install travis
    
    1. 提示错误
    
    

    六、需要搭建C/C++编译开发环境

    1. 安装gcc
    sudo apt-get install gcc
    
    1. 安装g++
    sudo apt-get install g++
    
    1. 需要安装make
    sudo apt-get install make
    
    1. 之后再安装travis 就成功了

    七、之后就是使用Travis

    1. 使用命令工具登录Travis
    jobbym@ubuntu:~/learn/blog/.travis$ travis login --auto
    
    1. Trivas 将前面生成的Private key 的文件id_rsa, 加密生成id_rsa.enc, 并自动在.travis.yml 的before_install 中,自动插入解密指令,-r 选项用来指定repos 名称
    jobbym@ubuntu:~/learn/blog/.travis$ travis encrypt-file id_rsa --add -r JobbyM/blog
    
    1. ** 注意** 这里应该将JobbyM/blog 修改为JobbyM/JobbyM.github.io,否则在自动部署时候,会提示如下错误
    0.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. 提示了如下错误
    $ 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 
    


    2. 大概是说缺少API key,查看了文档http://theme-next.iissnan.com/third-party-services.html#algolia-search,提示需要将Search-Only API key 设置为环境变量

    $ export HEXO_ALGOLIA_INDEXING_KEY=Search-Only API key
    $ hexo algolia
    
    1. 修改_config.yml 为如下
    # Algolia
    algolia:
      applicationID: 'SV57WJ53OS'
      indexName: 'jobbymsblog'
      chunkSize: 5000
    


    4. 修改.travis.yml ,在before_install 之前设置环境变量

    before_install:
    - export HEXO_ALGOLIA_INDEXING_KEY=$hexo_aloglia
    


    5. 在https://www.travis-ci.org/github/JobbyM/JobbyM.github.io/settings 这里进行新增一个变量hexo_aloglia

    6. 这个变量的值为Admin API Key 的值,而不是Search-Only API Key 的值。在https://www.algolia.com/apps/SV57WJ53OS/api-keys/all 在这里进行查看相关值

    7. 使用Search-Only API Key 会提示如下错误信息, 没有权限去更新对象

    $ 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)
    

    九、更新之后会跳转到http://zouzeir.xyz/ 域名,需要将source/CNAME 文件内容清空,同时重新刷新浏览器

    参考文档

    1. Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换
    2. Windows10访问Ubuntu子系统(WSL)的桌面环境
  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/JobbyM/p/13404357.html
Copyright © 2011-2022 走看看