概述

今天我想把博客什么的搬到 github 的 vuepress 上面。但是每次提交 md 文件需要手动打包然后再提交到 github 的 gh-pages,非常麻烦。所以我去研究了一下用 circleci 自动集成。总体来说还是比较简单的。我把新的记录下来,供以后开发时参考,相信对其他人也有用。

我的 vuepress 博客地址(目前还没什么内容)

集成步骤

1.把项目提交到 master 分支,然后在项目主目录下面创建 .circleci 文件夹,在文件夹里面创建 config.yml 文件,写入下列内容:

# Javascript Node CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-javascript/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/node:latest # Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/mongo:3.4.4 # working_directory: ~/repo # only master branch will be deployed
filters:
branches:
only: master steps:
# connect to github by ssh
- add_ssh_keys:
fingerprints:
- "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:" - checkout # Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies- - run: yarn install - save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }} - run: sh deploy-circleci.sh

简单来说,上面文件的意思是,每次 master 分支有修改的时候,就自动触发 circleci 集成功能,让它用 ssh 连接 github 部署到 gh-pages。

2.我们给 circleci 创建 ssh。进入这个地址 https://circleci.com/gh/<github_name>/<repo_name>/edit#checkout。点击使用 user key,然后授权 circleci 自动生成 user key,最后点击 add user key就可以了。(这里设置了之后需要把 fingerprints 加到步骤一的文档里面去)

这里说明一下 deploy key 和 user key 的区别:

  1. checkout 页面的 deploy key 只有读权限,没有写权限;如果要加入有读写权限的 deploy key,需要手动生成 ssh 然后到 ssh permission 页面去加。deploy key 只对特定仓库有权限。

  2. user key 对你的账号下的所有仓库都有读写权限。

这里是integration 文档github ssh 文档

3.我们创建 circleci 的 deploy 文档。在主目录下面创建 deploy-circleci.sh 文件,内容如下:

git pull
yarn build
git checkout gh-pages
git push

4.依据CircleCI 前端自动部署的步骤集成到 circleci 上面去即可。

最新文章

  1. AngularJS API之$injector ---- 依赖注入
  2. 当div自适应的高度超过预设的高度的时候出现滚动条的办法
  3. mtk lcm驱动加载流程 (转载)
  4. 反汇编windows htonl()函数
  5. 时区之痒 - 从手机GPS模块获取的时间,真的是北京时间么?
  6. Han Move(细节题)
  7. [置顶] 关于本博客 http://www.imobilebbs.com
  8. Working with Entity Relations in OData
  9. 如何把phpStorm打造成自己的专属IDE
  10. Mego开发文档 - 处理并发冲突
  11. 非阻塞读和写:str_cli函数
  12. yafu安装使用方法以及mismatched parens解决方法
  13. pip安装报错 解决办法
  14. 记一次Struts2 内核问题分析解决
  15. Linux 内核源代码根目录
  16. P2860 [USACO06JAN]冗余路径Redundant Paths tarjan
  17. FastReport报表设计(仔细看)
  18. 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践
  19. egret-初步接触
  20. peek函数的用法

热门文章

  1. 多层 iframe 嵌套 js 方法调用
  2. iconv_close - 关闭字符转换描述符
  3. jumpserver模块功能介绍
  4. Linux下关闭Tomcat
  5. 页面中获取 iframe 中的值
  6. python变量与常量内容:
  7. 微信小程序购物车功能
  8. python tkinter菜单
  9. 【NOIP2017提高组模拟12.10】幻魔皇
  10. 通过页面名字调用页面并添加到tab控件中