简介
印记中文的成立主要是为了协助社区更好地翻译与部署文档。最近联合腾讯云一起设计了一套有效提升访问速度及降低流量消耗成本的方案,即 COS 对象存储服务 及 CDN 加速方案。本文主要描述方案大体的实现过程,如果你是技术文档的管理者,苦于没有优秀的文档部署方案,可以联系印记中文 (docschina),我们会提供接入服务。如果你遇到性能问题,我们也可以提供免费的技术咨询服务
** QQ 群:492361223 **
也可以关注我们的公众号:
代码存放及 CI 构建
一般而言,对公有代码,一般采用 Github + Travis-CI 存放及构建方式。而对于私有代码来说,则会直接使用 Bitbucket + Pipeline (Bitbucket 自有的构建服务)。(点击以下标题展开详细内容)
Github + Travis-CI
自动构建与部署服务的架构如下图:
在代码仓库方面,我们需要两个分支,一个是 master
分支,用于存放文档源码,另一个是 gh-pages
分支,用于存放生成的文档文件。
然后,我们需要配置 .travis.yml
文件,用于 Travis-CI 构建和部署我们的项目,下面是求全配置,表示仅在在 master
分支有 push
或者 pull request
事件的时候,才会触发构建,使用语言是 node.js
,版本是 6.x
,首先运行完安装依赖的 npm install
之后,再运行 bash ./scripts/deploy.sh
。
1 2 3 4 5 6 7 8 9 10 11 12 |
branches: only: - master language: node_js node_js: - "6" script: - bash ./scripts/deploy.sh sudo: required install: - npm install |
那么 ./scripts/deploy.sh
脚本中,主要就是承担构建、鉴权,以及代码推送的功能。
1 2 3 |
// deploy.sh 第一部份,用于构建代码 npm run dist |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// deploy.sh 第二部份,用于与github鉴权 REPO=`git config remote.origin.url` SSH_REPO=${REPO} git config --global user.name "Travis CI" git config --global user.email "ci@travis-ci.org" git remote set-url origin "${SSH_REPO}" openssl aes-256-cbc -K $encrypted_7562052d3e34_key -iv $encrypted_7562052d3e34_iv -in scripts/deploy_key.enc -out scripts/deploy_key -d chmod 600 scripts/deploy_key eval `ssh-agent -s` ssh-add scripts/deploy_key |
1 2 3 4 |
// deploy.sh 第三部份,用于向github推送代码 chmod -R 777 node_modules/gh-pages/ npm run deploy // dist是生产代码目录,deploy 所跑脚本是 gh-pages -d dist,最终将代码推送到gh-pages 分支 |
那第二部份的 ssh key 怎么生成呢?其实整个 github 的鉴权原理不难,用工具成生 ssh key 公钥与私钥,然后将公钥存放到 github 的 repository 中,将私钥存放到代码库中,在 Travis-CI 推送代码之前添加私钥,那么推送的时候就可以顺利鉴权成功。
那具体怎么生成 ssh key 呢,具体可以参考这个文档 Generating a new SSH key to generate SSH Key。
然后,到你的文档本地代码仓库键入以下示例命令:
1 2 3 4 |
ssh-keygen |