利用 Travis 自动部署博客

Travis CI 是一个非常好用持续集成工具。

集成 主要是用来将多个用户的开发模块构建成一个可运行版本;而 持续集成 则是在集成之上,尽量将每一次提交都进行一次构建,这个个过程就是 持续集成

Travis 自动构建

Travis Ci 的自动构建周期分为两步:

  1. install
  2. Script

但是我们可以根据这两步将相关的内容分成更细的步骤:

  1. before_install
  2. install
  3. befor_script
  4. script
  5. after_success 或者 after_failure
  6. before_deploy
  7. deploy
  8. after_deploy
  9. after_script

持续集成就是把一系列的手工操作合并成一个脚本的过程。

所以可以这样实现部署脚本:

sudo: false
language: go
os: osx
install:
brew install hugo

script:
  - hugo --config jane-config.toml

branches:
  only:
    - source
after_success:
    - git add -A
    - git commit -m "update blog"
    - git push -u origin master

这个脚本中,我们主要工作是生成 hugo 博客这一步,如果成功了,我们就进行提交,也就完成了。

Travis GitHub Pages

经过查阅之后,发现 Travis Ci 本身就支持直接部署到 GitHub Pages 上,并拥有单独的章节。

个人令牌

GitHub 中的 Setting 下的 Developer settings 中,有一个 Personal access tokens 中,可以生成,然后配置到 Travis Ci 对应的 My Repositories 中的项目中,一般的话,使用 public_repo 权限就足够了。

如果在 My Repositories 中看不到 Settings ,可以在 More options 中找到 Settings 然后在 Environment Variables 中配置对应的令牌即可。

个人配置

在项目中新增 .travis.yml ,内容如下:

deploy:
  provider: pages
  skip-cleanup: true
  github-token: $GITHUB_TOKEN
  # Set in the settings page of your repository, as a secure variable
  keep-history: true
  on:
    branch: master

GitHub Pages 默认的一些参数:

  • local-dir: 推送到 GitHub Pages 的目录,当前路径的相对路径,默认为当前路径
  • repo: 项目仓库的地址,默认为当前项目
  • keep-history: 可选参数,使用递增的推送信息代替强制推送,默认为 false
  • target-branch: 将 local-dir 内容推送的分支,默认为 gh-pages ,如果 keep-historytrue ,则强制推送 git push -f
  • fqdn: 可选参数,设置用户的自定义域名,默认为无自定义域名
  • project-name: 默认为 fqdn 的值或者是仓库的固定路径,用于元数据
  • email: 可选参数,提交人信息,默认为 deploy@travis-ci.org
  • name: 可选参数,提交人,默认为 Deployment Bot
  • committer-from-gh: 可选参数,默认为 false ,允许令牌拥有者使用,会覆盖掉 emailname 两个的值
  • allow-empty-commit: 可选参数,默认为 false ,仅在 keep-history 参数为 true 时启用
  • github-url: 可选参数,默认为 github.com ,是企业级自托管 GitHub 项目的 URL 地址
  • verbose: 可选参数,冗余的内部步骤,默认为 false

备注:

  1. 默认情况下,travis 会自动执行 git submodule init ,但是需要使用 https 的路径,否则需要配置 ssh key ,而 GITHUB_TOKEN 要保证和 travis 设置的变量一致,名称和值都要一致
  2. fqdn 如果需要设置自定义域名,可以设置这个参数,travis 会自动生成 CNAME 文件提交,同时要设置 config.toml 中的相应的 baseURL
  3. branches: only: source 等价于 deploy: on: branch: source

Environment Variables

除了令牌之后,我们也可以将 nameemail 等相关信息配置到这里,比如推送的分支,可以设置为 P_BRANCH 然后在推送的时候,使用 ${P_BRANCH} 来引用。

Author
Tags
总结(3) Emacs(2) org mode(4) 年度清单(2) 读书清单(2) 电影清单(2) 电视清单(2) Python(3) 学习计划(1) 子弹笔记(1) 手帐体系(1) 时间管理(1) 时间使用效率(1) 形意拳(1) 知识管理(1) 简历(1) 技能水平(1) 生活(1) 减法生活(1) 阅读(1) 阅读分组(1) org(1) docx(1) markdown(2) cmder(1) 图床(1) jsdelivr(1) github(1) 安卓系统(1) 手动更新手机系统(1) post link(1) post path(1) hexo(2) hugo(2) GitHub Pages(1) travis(1) 自动部署博客(1) presentation(1) gcc(1) g++(1) 默认表格(1) 复杂表格(1) multimd table(1) google adsense(1) evil(1) surround(1) librime(2) emacs-rime(1) liberime(1) dot(1) graphviz(1) use-sub-superscripts(1) ditaa(1) Evil Multiple cursors(1) turn evil mode off(1) modifier keys(1) keymap(1) super(1) hyper(1) install Emacs(1) Mac OS(1) keybinds(1) clocktable(1) coding system(1) image library(1) keybind(1) spacemacs(1) org babel(1) homebrew(1) dd(1) diskutil(1) tmux(1) xcode(1) xcrun(1) node-gyp(1) tar(1) tree(1) pacman(1) plantuml(1) find(1) grep(2) du(1) apt-get(1) apt(1) regex(1) wildcard(1) zsh(1) gdb(1) lsof(1) netstat(1) rebase(2) workflow(1) 工作流(1) .gitignore(1) postbuffer(1) hung up(1) merge(1) cache(1) reset(1) Git(1) command(1) submodule(1) GitHub Pull Request(1) pr(1) Matplotlib(1) beautifusoup(1) 下载小说(1) SOLID(1) Leetcode(2) 透视表(1) read_excel()(1) pandas(1) conda(1) django(1) markdown-deux(1) mysql(1) oracle(1) 模糊查询(1) logging level(1) reflex(1) Field(1) Maven(1) Selenium(1) 下拉框(1) select into(1) insert into select(1) CAST(1) CONVERT(1) timestamp(1) concat(1) concat_ws(1) group_concat(1) union(1) grant privileges(1) 重置 root 密码(1) 报错 10060(1) 清理连接数(1) create user(1) set password(1) exists(1) in(1) markdown-it(1) emoji(1) tasks(1) valine(1) Code 504(1) Hugo(1) theme(1) substring(1) indexOf(1) RegExp(1) 定位节点(1) 正则匹配(1) async(1) 异步请求(1) css(2) layui(1) 滚动条(1) JavaScript(1)