OSS-CDN-travisCI-自动化部署你的博客
部署回顾
之前写了两篇OSS-CDN-GithubPage的部署教程,如果没看的请戳下面的链接,本次教程是接着原教程写的。
背景
当我们部署到oss上后,每次发版都需要运行部署的命令
1 | hexo g -d |
部署后还要下载master分支后的代码,然后把所有的资源传到OSS上,其实这些步骤 Travis-CI 都可以帮你做。省了不少事。
目标
hexo分支提交代码后,自动执行部署命令,并把部署后的代码上传到OSS上。换句话说,我们只需要写文章即可,发版构建上传通通不用操心。
步骤
- 打开 官网 ,用Github注册登录Travis-ci。点击 Sign Up
- 用你的github授权Travis-ci
- 第一次进入需要点击 ACTIVATE ALL REPOSITORIES USING GITHUB APPS
- 然后可以选择是所有仓库都接入Travis CI还是指定仓库接入。我选择的是全部仓库。
- Approve后会让你重新登录一次,如下图
- 再认证一波
- 终于进来了,可以看到右边就是所有的仓库了
- 找到我们本次接入的仓库 jianqiao.github.io ,点击 Settings
- 在Environment Variables导入本次必备的变量
- accessKeyId:阿里云OSS需要的accessKeyId
- accessKeySecret:阿里云OSS需要的accessKeySecret
- bucket:阿里云OSS本次操作的bucket
- github_token:主要是用来hexo d的时候往master提交代码,否则没有权限,生成github_token可以见附录1
- HEXO_ALGOLIA_INDEXING_KEY:hexo algolia搜索用的admin的key,具体位置见附录2
- region:阿里云OSS的region
在 hexo 分支中增加 .travis.yml 文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54# 咱们使用的是nodejs
language: node_js
# 版本是10.19.0
node_js: "10.19.0"
# 在安装前打印当前目录的文件和路径,方便你理解构建环境
before_install:
- ls -a
- pwd
# 全局安装hexo-cli,因为我本地是3.1.0所以脚本定死版本了
install:
- npm install -g hexo-cli@3.1.0
- npm install
# 在执行脚本之前,我们需要设置algolia的环境变量,否则无法执行hexo algolia命令
before_script:
- export HEXO_ALGOLIA_INDEXING_KEY=${HEXO_ALGOLIA_INDEXING_KEY}
# 在执行前,需要先下载Butterfly主体,当然,如果你用的不是我的这个主题,此部分可以删除。
# sed主要是为了替换gh_token用的,下面会讲到,这行的作用是把URL中gh_token替换成上面我们加的环境变量github_token
script:
- git clone -b 2.3.5 https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly
- hexo clean
- hexo g
- hexo algolia
- git config user.name "jianqiao0313"
- git config user.email "jianqiao0313@gmail.com"
# 替换同目录下的_config.yml文件中gh_token字符串为travis后台刚才配置的变量,注意此处sed命令用了双引号。单引号无效!
- sed -i "s/gh_token/${github_token}/g" ./_config.yml
- hexo d
# 创建uploadToOss文件夹,然后clone你的博客的master分支,再clone上传阿里云的脚本。具体脚本内容请看附录3。然后运行index.js 把环境变量通过命令行参数的形式传递进去
after_script:
- mkdir uploadToOss
- cd uploadToOss
- git clone https://github.com/jianqiao0313/jianqiao0313.github.io.git
- git clone https://github.com/jianqiao0313/upload-oss-by-travis-ci.git
- cd upload-oss-by-travis-ci
- ls -a
- pwd
- npm i
- node index.js publicPath=../jianqiao0313.github.io region=${region} accessKeyId=${accessKeyId} accessKeySecret=${accessKeySecret} bucket=${bucket}
- echo "build finished"
# 只有指定的分支提交时才会运行脚本
branches:
only:
- hexo
# 邮件提醒,但截至20年5月19日 邮件服务好像有问题,见附录4
notifications:
email:
recipients:
- jianqiao0313@gmail.com
- jianqiao0313@126.com
on_success: always
on_failure: always修改 _config.yml 文件中deploy,gh_token就是我们上一步sed替换的标识,这样才能推送到master分支。
1
2
3
4
5
6
7
8
9
10
11// 修改前
deploy:
type: git
repo: git@github.com:jianqiao0313/jianqiao0313.github.io.git
branch: master
// 修改后
deploy:
type: git
repo: https://gh_token@github.com/jianqiao0313/jianqiao0313.github.io.git
branch: master在你的hexo分支,随便写点东西,提交吧,Travis-CI会自动开始构建,体会持续集成的魅力。
附录
附录1 Github Token如何生成
- 点击右上角的 Settings
- 点击 Developer settings
- 点击 Personal access tokens, 点击Generate new token
- Note随便填,下面只需要勾选repo即可
附录2 HEXO_ALGOLIA_INDEXING_KEY后台在图示处,点击复制按钮即可
附录3 上传阿里云OSS脚本
1 | // index.js |
附录4 邮件通知有问题
希望官方尽快修好把。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jianqiao0313!
评论