TravisCI 自动部署 blog

持续集成指的是只要代码有变更,就自动运行构建和测试,反馈运行结果。确保符合预期以后,再将新代码"集成"到主干。

持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。

思路

项目(blog分支)跟目录编写.travis.yml 
==> 提交github触发CI 
==> 打包出public静态资源文件夹 
==> 提交到master分支、同步到其他厂库master分支
// 个人访问令牌方式(coding文档查阅)
git push --quiet "https://${TOKEN_NAME}
:${TOKEN}@e.coding.net/c_illusion/hugo_blog.git" master:master

步骤:

  • 1 github中的项目(我的是hugo的blog项目)

  • 2.1 coding》个人设置》访问令牌》新建令牌(备用):

# 令牌的作用是为了API访问/读取(充当用户名、密码的作用)
cd4xxxxxxxxxxxxxxxxxxd16c49a
  • 2.2 github》Settings》Developer settings 》Personal access tokens》Generate new token(备用)
48exxxxxxxxxxxxxxxxx0af98882
  • 3 登录TravisCI https://www.travis-ci.org/ ,目前好像仅支持github,使用github账号登录
  • 4 选中需要CI的项目进行设置(codingToken和githubToken)
Environment Variables 下添加
添加
GITHUB_TOKEN
CODING_TOKEN
  • 5 blog项目下新建.travis.yml
language: node_js
node_js:
  - 10

# 指定缓存模块,可选。缓存可加快编译速度
cache:
  directories:
    - themes

# 指定仓库地址
env:
  global:
    # Github Pages
    - GITHUB_ADDR: github.com/clsss/blog.git
    # Coding Pages
    - CODING_USER: pt76t97zsh80
    - CODING_ADDR: e.coding.net/c_illusion/hugo_blog.git

# 指定dev分支触发钩子
branches:
  only:
    - blog # build dev branch only

before_install:
  - export TZ='Asia/Beijing' # 设置时区

# Start: Build Lifecycle
install:
  - wget https://github.com/gohugoio/hugo/releases/download/v0.70.0/hugo_0.70.0_Linux-64bit.tar.gz
  - tar -xzvf hugo_0.70.0_Linux-64bit.tar.gz
  - chmod +x hugo   # 给执行权限
  - export PATH=$PATH:$PWD
  - hugo version
  - rm -rf public
  - git log -p -2 | cat
  - commit_msg=$(git log -n1 --pretty=format:"%s")
  - echo 'install done!'

# 执行 hugo 生成静态页面
script:
  - hugo
  - echo 'Hugo build done !'

# 提交,邮箱;替换真实token到_config.yml文件,最后depoy部署
after_script:
  - cd ./public
  - git init
  - git config user.name "c_illusion"
  - git config user.email "670199384@qq.com"
  - git add .
  - git commit -m "自动部署:${commit_msg} "
  # Github Pages
  - git push --force --quiet "https://${GITHUB_TOKEN}@${GITHUB_ADDR}" master:master
  # Coding Pages
  - git push --force --quiet "https://c_illusion:${CODING_TOKEN}@${CODING_ADDR}" master:master
  # set tag
  - git tag v0.0.$TRAVIS_BUILD_NUMBER -a -m "tag $TRAVIS_BUILD_NUMBER"
  # Github Pages
  - git push --quiet "https://${GITHUB_TOKEN}@${GITHUB_ADDR}" master:master --tags
  # Coding Pages
  - git push --quiet "https://c_illusion:${CODING_TOKEN}@${CODING_ADDR}" master:master --tags
# End: Build LifeCycle