Travis CI 部署遇到的问题

18次阅读

共计 1976 个字符,预计需要花费 5 分钟才能阅读完成。

最近研究 nuxt 服务端渲染的时候,看到 nuxt 的几种部署方式,因为 nuxt 打包的静态文件可以直接放在 GitHub 上面,然后 TravisCI 跟 GitHub 又很亲切,就选择了 TravisCI 部署。然后就走上了研究 TravisCI 的不归路。
Travis CI 部署到 GitHub 项目 gh-pages 分支上,打开页面发现引用资源 404?
在研究 nuxt 的这一篇文章《如何部署至 GitHub Pages?》的时候,所有操作都按照文章提示来,发现怎么部署都失败,然后仔细看自己页面资源引用的路径,并没有实现文章中的 router base 的路径配置。
router: {
base: ‘/<repository-name>/’
}
然后自己反复上传验证,终于发现问题。在官网给出的 TravisCI 配置中:
language: node_js
node_js:
– “8”

cache:
directories:
– “node_modules”

branches:
only:
– master

install:
– npm install
– npm run generate # 这个需要改为 npm run generate:gh-pages

script:
– echo “Skipping tests”

deploy:
provider: pages
skip-cleanup: true
github-token: $GITHUB_ACCESS_TOKEN # Set in travis-ci.org dashboard, marked secure https://docs.travis-ci.com/user/deployment/pages/#Setting-the-GitHub-token
target-branch: gh-pages
local-dir: dist
on:
branch: master
需要把 install 中的 npm run generate 改为 npm run generate:gh-pages,这样就可以走 gh-page 分支的打包了。不知道是不是还有别的解决方法,刚接触也不是特别了解。
Travis CI 如何部署服务器?
可以参考这篇文章 Travis CI 自动化部署博客
Travis CI 部署服务器如何实现免密登录?
搞完 GitHub Pages 静态部署,然后就想部署服务端,毕竟接触 nuxt 的目的就是实现服务端渲染。然后找了一个比较坑的文章 … 每次 Travis 部署后,都要求输入一个密码。卡在了免密登录的地方卡了很久很久 … 在此多谢 @X1nFLY 的帮忙,很耐心的帮我解决了问题。
其实免密登录跟 trvais 并没有什么关系,原理就是私钥公钥的加密解密(有兴趣可以自行去搜索),只要你本地 ssh 连接实现免密登录,那 Travis 部署也可以的。
需要在终端输入:
ssh-copy-id username@your-server-ip

ssh-copy-id 将本机的公钥复制到远程机器的 authorized_keys 文件中,ssh-copy-id 也能让你有到远程机器的 home, ~./ssh , 和 ~/.ssh/authorized_keys 的权利,这时候只要你终端输入:
ssh username@your-server-ip
再次连接就不用再输入密码啦~
Travis CI 部署怎么启动 nuxt 服务,node 服务?
下面到了最关键的时刻,部署成功后 after_success: 怎么处理?对于一个前端(没怎么接触过后台)来说,确实一脸懵逼,要操作 一些常用 Linux 命令。下面我就总结几个我碰到的:
部署 nuxt 静态资源到服务器。
因为 nuxt 静态资源是打包到 /dist 文件夹下的,所以我们只需要把 /dist 文件夹 拷贝到服务端对应的文件夹即可。
after_success:
– rsync -az –delete ./dist/* root@123.123.123.123:/data/html/nuxt # copy dist 文件夹下的所有文件

部署 nuxt 服务端渲染应用到服务器。
打包对应文件夹是.nuxt 文件,但是需要服务端启动服务,所以需要安装各种依赖以及启动配置。
所以需要将 .nuxt nuxt.config.js package.json static 文件或文件夹都拷贝到服务器上,并对其安装依赖,启动服务。
after_success:
– rsync -az –delete .nuxt nuxt.config.js package.json root@47.99.102.212:/data/ssr
– ssh root@123.123.123.123 ‘cd /data/ssr/ && npm install && npm run start’

部署 node 应用服务器。
after_success:
– ssh root@123.123.123.123 ‘cd /data/node/ && git pull && npm install && npm run prd’

正文完
 0