使用 Travis-CI 自动部署 Hugo 博客到 Coding.net

初心

在网络上找了好久,看到有非常多 Travic-CI 自动构建部署 Hexo 的文章,就是没有找到利用 Travic-CI 自动构建部署 Hugo 博客,想着想着就开始自造轮子了,毕竟 Hugo 辣么好是吧?

本文特点

不仅仅利用 Travic-CI 自动部署 Hugo,而且把生成的博客部署到 Coding.net 上,想想都有些小激动呢。:D

整体规划总思路

  • 把博客资源放在 GitHub 上,利用 Travis-CI 进行持续集成,构建博客文件
  • 接着把生成的 /public 文件夹里的全部内容推送到 Coding.net 的仓库中

细节点

  • 因推送到 Coding.net 需要 ssh-key,所以在推送前,要在 Travis-CI 上的 Linux 服务器部署好 git 环境和加入你连接到 Coding.net 的私钥
  • GitHub 和 Coding.net 上使用相同的公钥

安装 Travis-CI Client 并登录

  • 用以加密自己的私钥,防止泄露
  • 建议使用 Linux 加密私钥,第一次我用 Windows 加密私钥,在 Travic-CI 上解密私钥的时候,一直出现错误,后面换了 Linux 加密私钥,才没出现错误
  • 我使用的是 Ubuntu 14.04,Travis-CI 也是这个版本

    $sudo apt-get update
    $sudo apt-get install make //更新make
    $sudo apt-get install ruby-full
    $gem sources --add https://gems.ruby-china.org/ --remove http://rubygems.org/ //更换中国 Gem 源,便捷安装 Travis,详细介绍 https://gems.ruby-china.org/
    $sudo gem install Travis -v 1.8.8 --no-rdoc --no-ri
    $travis version //查看 Travis 有没有安装成功
    $travis login //登录你的 GitHub 账号
    

生成加密链接Coding.net私钥文件

  • 需要在 Ubuntu 上 git clone 用于链接 Travis-CI 的 GitHub 仓库

    sudo apt-get install git
    sudo chown ubuntu ~/.ssh/
    sudo chgrp ubuntu ~/.ssh/
    git config --global user.name "your name"
    git config --global user.email "your email"
    git clone <repository url>
    cd <repository directory> /进入这个
    上传 id_rsa (私钥)到 <repository directory>中
    travis encrypt-file id_rsa //加密私钥
    
  • 提示以下信息,便表示加密完成

    encrypt-id_rsa

  • 加密完成后,在 Travis-CI 上此项目配置中也同样有这个加密信息

    encrypt-information-on-Travis-CI

  • 完成加密后,请把加密后的 id_rsa.enc 保存好,并记录好上面的 encrypted_1ddk1199d526_keyencrypted_1ddk1199d526_iv 的信息

链接 Travis-CI 的 GitHub 仓库的目录结构

.
├── archetypes
├── content
├── data
├── layouts
├── static
├── themes
├── CI
│   ├── deploy.sh
│	└──	id_rsa.enc
├── travis.yml  	// Travis 配置文件
└── config.toml

CI 文件夹内部文件介绍

  • - ```id_rsa.enc```:用于链接 Coding.net 远程仓库,不多解释了
    
    ### .travis.yml 配置信息如下
    
    

language: go sudo: false dist: trusty

go: - 1.9.2

git: depth: 10

addons: ssh_known_hosts: git.coding.net

install: - wget https://github.com/gohugoio/hugo/releases/download/v0.34/hugo_0.34_Linux-32bit.tar.gz - tar -xzvf hugo_0.34_Linux-32bit.tar.gz

script: - ./hugo

deploy: provider: script script: sh CI/deploy.sh skip_cleanup: true on: branch: master


- 详细介绍,请看 [Travic-CI官方文档](https://docs.travis-ci.com)

### deploy.sh配置信息如下

#!/bin/bash

deploy

openssl aes-256-cbc -K $encrypted_1ddk1199d526_key -iv $encrypted_1ddk1199d526_iv -in CI/id_rsa.enc -out ~/.ssh/id_rsa -d chmod 600 ~/.ssh/id_rsa eval $(ssh-agent) ssh-add ~/.ssh/id_rsa git config –global user.name “your name” git config –global user.email “your email” git clone cd cp -R ../public/* . git add . git commit -m “built blog” git push origin master ```

上面的配置信息部分需要替换

  • encrypted_1ddk1199d526_key and encrypted_1ddk1199d526_iv:用以解密 id_rsa.enc - your name and your email - <repository directory>:这个为推送生成好的 /public 到 Coding.net 的远程 repository 地址 ### 此时此刻定是晕头转向了:-) 其实到此时此刻,你已经把所有配置信息做好了,接下来你只需要把连接 Travis-CI 的 GitHub-repository 推送上去,Travis-CI 便会为你自动构建并部署好。 ### 结语 这轮子造的时候拖了几天了:-),其实一开始去看 Travis-CI 的文档挺难的,新出来的东西资料少,中文资料更少了。但是知道 Travis-CI 其实就是 Linux 之后,就开始边在 Linux 上测试命令,边在 Travis-CI 上构建,花了一天时间弄出来了这个 .travis.yml 文件,也许生活就是用来折腾来折腾去的。

All content under CC BY-NC-ND 4.0