印记中文推出文档CDN + COS 部署方案

  经营许可证     |      2023-09-25
印记中文推出文档CDN + COS 部署方案

原文链接

简介

Imprint中文的成立主要是为了协助社区更好的翻译和部署文档。近期,我们与腾讯云一起设计了一款能够有效提升访问速度、降低流量消耗成本的解决方案,那就是COS 对象存储服务和CDN 加速解决方案。本文主要描述该方案的总体实现流程。如果您是技术文档管理者,苦于没有优秀的文档部署解决方案,您可以联系docschina,我们将提供接入服务。如果您遇到性能问题,我们还可以提供免费的技术咨询服务

QQ群:492361223

官方网站:docschina.org

代码存放及CI构建

一般来说,公共代码一般采用Github + Travis-CI的存储和构建方式。对于私有代码,将直接使用Bitbucket + Pipeline(Bitbucket自己的构建服务)。

Github + Travis-CI

自动构建部署服务结构如下:

样品流程

就代码仓库而言,我们需要两个分支,一个是master分支,用于存储文档源代码,另一个是gh-pages分支,用于存储生成的文档文件。

然后,我们需要为Travis-CI 配置.travis.yml 文件来构建和部署我们的项目。以下是完整配置,这意味着只有在master 分支中有推送或拉取请求事件时才会触发构建。使用的语言是node.js,版本是6.x,运行npm install后先运行bash ./scripts/deploy.sh来安装依赖。

javascript 分支:仅: - 主语言:node_js node_js: - '6' 脚本: - bash ./scripts/deploy.sh sudo:必需安装: - npm install

那么./scripts/deploy.sh脚本主要承担构建、认证、代码推送的功能。

javascript //deploy.sh 第一部分,用于构建代码npm run dist

javascript //deploy.sh 第二部分用于通过github 进行身份验证REPO=git config remote.origin.urlSSH_REPO=${REPO} git config --global user.name 'Travis CI' git config --global user。电子邮件'ci@travis-ci.org'git远程set-url原点'$ {SSH_REPO}'openssl aes-256-cbc -K $加密_7562052d3e34_key -iv $加密_7562052d3e34_iv -in脚本/deploy_key.enc -out脚本/deploy_key -d chmod 600 脚本/deploy_key evalssh-agent -sssh-add 脚本/deploy_key

javascript //deploy.sh 第三部分用于推送代码到github chmod -R 777 node_modules/gh-pages/npm run deploy //dist为生产代码目录,deploy运行的脚本为gh-pages -d dist, 最后将代码push到gh-pages分支

如何生成第二部分中的ssh密钥?其实整个github的认证原理并不难。使用工具生成ssh key公钥和私钥,然后将公钥存储在github的存储库中,将私钥存储在代码库中,并在Travis-CI推送代码之前添加。私钥,那么推送时就可以认证成功。

具体如何生成ssh key,可以参考这篇文档Generate a new SSH key来生成SSH Key。

然后,转到您的文档本地存储库并键入以下示例命令:

javascript ssh-keygen -t rsa -b 4096 -C ci@travis-ci.org 输入保存密钥的文件(/var/root/.ssh/id_rsa):deploy_key

当您有以下疑问时,可以输入跳过。

输入密码(没有密码则为空):

打开deploy_key.pub文件,复制内容,然后到在线代码仓库https://github.com/your name/your repo/settings/keys添加ssh公钥。

在github 中部署密钥

然后安装travis客户端工具,用于上传SSH Key信息到Travis-CI服务器。上传后,运行以下命令:

javascript travis 加密文件deploy_key

travis 加密文件结果

使用时,将以下代码复制到deploy.sh中,并将deploy_key.enc文件复制到scripts目录中。请记住切勿上传deploy_key.pub 文件。

javascript openssl aes-256-cbc -K $encrypted_7562052d3e34_key -iv $encrypted_7562052d3e34_iv -inscripts/deploy_key.enc -outscripts/deploy_key -d 然后使用以下命令登录:

javascript 特拉维斯登录

Bitbucket + Pipeline

Bitbucket + Pipeline 和Github + Travis-CI 的流程大致类似,可以参考上一节的架构图。只是个别流程略有差异。

生成SSH Key的方法与Github相同,请参考生成新的SSH key。

然后前往https://bitbucket.org/account/user/username/ssh-keys/,或者点击网站左下角头像,输入Bitbucket Setting,Security,SSH keys,添加公钥。

至于deploy.sh脚本,则有一些差异。

javascript //deploy.sh 第一部分,用于构建代码npm run dist

javascript //deploy.sh 的第二部分用于通过github 进行身份验证REPO=git config remote.origin.url SSH_REPO=${REPO} git config --global --replace-all user.name '