专栏首页洞明学问利用 Travis 自动部署博客

利用 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
  • 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
    1. 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} 来引用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用 Mac 电脑制作 U 盘

    zucchiniy
  • 忘记 MySQL Root 用户密码

    因为长时间未使用MySql导致忘记了root密码,现在将修改root用户密码的方法记录下来。

    zucchiniy
  • Layui 表格

    Layui 分页是由 laypage 实现的,所以既需要分页 laypage 还需要数据表格相关的内容。

    zucchiniy
  • string 之 strcat 函数

    Author: bakari  Date: 2012/8/9 继上篇。。。。。 下面是我写的代码与源码作的一些比较,均已严格测试通过,分别以“string 之”...

    CloudDeveloper
  • ubuntu 16.04 samba服务搭建

    3. 将配置文件备份, sudo cp smb.conf smb.conf.bak 这是个人习惯。

    yaohong
  • 沙盒syscall监控组件:strace and wtrace

    最近在看一些时间管理方面的书,发现其实很多事情都是可以安排清楚,关键在于固定的时间,固定的投入,形成习惯,成为良性循环。

    七夜安全博客
  • 交通预测-如何在深度学习框架下考虑动态时空相似性?

    在此真诚感谢身边多位好朋友这几天帮我推广公众号,很感谢很感谢,如果你觉得分享的文章有用就帮忙推广一下吧~

    深度学习与交通大数据
  • LiTr:适用于Android的轻量级视频/音频转码器

    原文:https://engineering.linkedin.com/blog/2019/litr-a-lightweight-video-audio-tra...

    LiveVideoStack
  • LiTr:适用于Android的轻量级视频/音频转码器

    https://engineering.linkedin.com/blog/2019/litr-a-lightweight-video-audio-transc...

    LiveVideoStack
  • Linux学习笔记之vim操作指令大全

    Vim是款强大的文本编辑器,但是众多指令需要学习,这次记录了指令大全方便以后翻阅。

    Jetpropelledsnake21

扫码关注云+社区

领取腾讯云代金券