github pages与travis ci运作原理

  当说到自动部署的时候,我很反感那些一上来就balabala说怎么操作的博文文章,照着别人的做法有样学样,经常会因为与自己项目实际情况不符而出现各种问题。

  比如说github和travis,首先应该搞明白,他们之间是如何运作的。

  首先,github pages是集成在github里面,可以解析静态的文件,并渲染成页面的。所以最简单的github pages应该是这样,新建一个项目,项目里面包含一个index.html。在项目的settings中打开github pages。搞定!

  但问题是,我们很多的实际项目,比如vue-cli项目。不是一开始就有静态文件的,而是需要手动通过npm run build或yarn build来打包生成。可能有人会说:我本地可以配置静态文件的导出目录,将静态文件导出到github pages能识别的路径。比如根目录或者根目录下的docs文件夹,在本地先run build,然后再把静态文件push到github上,供github pages解析渲染。

  但如果要弄成这样,还叫自动化部署吗?还叫持续集成交付吗?所以问题的关键是:需要找到一个东西,可以帮我们run build,同时生成的静态文件也要放在github pages可以解析的路径里。程序员每次推代码只关心代码本身,不关心打包过程和静态文件应该存放在哪儿。

  github本身是没有这个环境来run build的,谁有呢?travis有。

  所以他们的运作过程是这样的:程序员往github上推了代码 --> travis检测了到程序员这一行为 -->拉取最新的项目代码到travis --> 在travis的虚拟机中对这个项目进行run build --> 生成静态文件 --> 将静态文件传回给github的可识别目录,供github pages解析渲染。

  说得直白一点:你推了项目到github上,travis把你的项目给克隆过去了,然后在travis的小黑屋的帮你打包静态文件,最后送还静态文件到你的github上。

  搞清楚了运作原理,接下来才是一些实施细节。

1,travis怎么知道程序员推了代码到github?

  travis与github是一对好基友,在travis的社区级官网(https://travis-ci.org/)里,可以用github账号登录,登录之后,即代表你的github对travis进行了Oauth授权,travis可以访问你的所有项目列表,同时,只要你手动打开监听开关,travis就可以监听指定项目的活动状态,比如有没有推代码。

2.监听到了github活动之后,诸如克隆代码,run build,返还静态文件这些操作细节在哪里配置?

  在github项目的根目录下新建一个.travis.yml的shell脚本文件,当travis监听到github项目活动时,就会在项目的根目录下找这个脚本文件,如果找到了,就执行文件里的内容。由于travis跟github是好基友,并不需要在你的项目中安装其他什么杂七杂八的东西来支持.travis.yml,直接新建即可。但注意必须严格起这个名字。下面是一个vue-cli项目的详细注解的shell脚本文件。

3.travis对github项目的读写操作需要授权,如何授权?

  在github/settings/developer settings/personal access tokens中,新建一个token,如下图:

  除了不准travis直接删掉我的github项目,其他的权限我都给了。生成之后在travis-ci.org中打开指定项目的settings,将token复制到到项目的环境变量中,并给他取个名字,如下图:

  比如我取的名字是GITHUB_TOKEN,那在.travis.yml执行的脚本里,通过$GITHUB_TOKEN就可以拿到这个授权码。

4.放到指定github路径中供github pages解析,那哪些路径才是有效的?

  在github的项目的settings中,可以看到pages一栏,可以看到合理的解析路径一共有以下几种:

  在这里我们选择第一种,为什么是gh-pages分支?因为travis在向github返还打包好的静态文件时,travis也是非常担心怕覆盖掉程序员写的代码,所以往master分支推还是往其他什么dev、develop、test分支推,只要是程序员自己建的分支,都有风险。这时候就需要有一个特定分支,这个分支不需要程序员自己建,而是travis来建,并且里面只存放静态文件,专门用于供github pages解析。这个travis默认新建的分支名,就叫gh-pages。在我的github项目中点开gh-pages分支,也可以看到这个分支的操作者是travis而不是我。

5.travis ci跑完后页面静态资源无法加载,报404错误?

  这个问题属于vue-cli项目的打包配置问题了。默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,如https://www.apps.com。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.apps.com/my-app/,则设置 publicPath 为 /my-app/所以要在vue-cli3.x项目的根目录下,新建一个vue.config.js文件配置一下publicPath。

  当然可以用“./”相对路径来实现,不过相对路径在一些场景中会有问题。比如当使用基于 HTML5 history.pushState 的路由时,或者当使用 pages 选项构建多页面应用时。所以还是不要用相对路径这种投机取巧的方法。在完成这一系列操作后,可以看到最终效果:一个vue-cli项目的默认界面。

原文地址:https://www.cnblogs.com/zhangnan35/p/10830010.html

时间: 2024-10-23 05:44:57

github pages与travis ci运作原理的相关文章

提高开源项目逼格-为你的github项目添加Travis CI

1.背景 每当我们浏览github开源项目的时候,比较牛的项目,往往在readme文件里,会有如下图这样的小绿标.因为博主的好奇心比较强,所以就研究了下怎么添加这个.大家也不妨动手试试! 2.步骤 (1)登陆以下网站,它会自动绑定你的github账号-https://travis-ci.org/ (2)会自动生成你的所有repo的列表,选择你要添加icon的repo,开启开关. (3)到相应repo的github目录下,添加一个验证文件.注意语言要正确,如"c,c++,python"

利用Travis CI 让你的github项目持续构建

Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜.目前大多数的github项目都已经移入到Travis CI的构建队列中,据说Travis CI每天运行超过4000次完整构建.对于做开源项目或者github的使用者,如果你的项目还没有加入Travis CI构建队列,那么我真的想对你说out了. 下面是本人的构建历史: 搭建Travis CI build,需要你有个github账号和github项目: 1:用gith

手把手教你使用Travis CI自动部署你的Hexo博客到Github上

简介 这年头要是没有个博客都不好意思给别人说你是程序员,我用XX笔记呀,不行吗?不行,这玩意儿要么不能公开分享,要么公开分享要会员,现在到处都是开源,自己学到了东西都不能分享给需要帮助的人,真是伤心呀.那么今天就来聊聊当你用Hexo搭建了博客,怎么自动更新呢,大家都知道Hexo是需要手动生成HTML静态网页的,虽然命令很少,但是每次写完博客先得推送到git然后在生成静态文件,再推送到服务器,想想我这个心也是醉了,不过看到知乎上还有人带着U盘,我只能呵呵了~,你们耐心真好~ 那我们今天就来说说怎么

基于Travis CI搭建Android自动打包发布工作流(支持Github Release及fir.im)

最近付费购买了Travis CI,Travis CI的收费模式很有意思,不是按项目或者用户,而是按工作进程收费,比如初级版本是$129/月,总共提供2个工作进程.在项目不多的情况下,除了用于跑单元测试外,不免想利用的更充分一些,因此抽空搭建了一套基于Travis CI的Android自动发布工作流. 未自动化前安卓开发总是避免不了这样的工作流程: 开发一些新功能,提交代码 完成一部分功能后,打包一个测试版APK 将测试版APK上传到QQ群 / 网盘 / Fir.im / 蒲公英等 在QQ群或发布

利用Travis CI+GitHub实现持续集成和自动部署

前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错. 如果你很熟悉持续集成,一定会同意这样的观点:"使用它已经成为一种标配". 什么是持续集成 Continuous Integration(CI) is a development practice that requires developers to integrate code into a shared repository several times a d

Vue 项目部署到GitHub Pages并同步到Gitee Pages

前言:相信很多前端开发者都拥有自己的vue项目,若想把自己的项目做成网站分享给大家看,最常用的就是利用Github提供的GitHub Pages服务和Gitee提供的Gitee Pages服务.其中,Github是国外网站,Gitee是国内网站(访问速度较快).本文给大家介绍的是如何将 vue-cli 3.0+项目部署到github pages 并同步到 gitee Pages上. 一.服务说明与注意事项 在你的github项目设置的GitHub Pages项,有这么一句话: GitHub Pa

学会Git玩转Github笔记(三)—— Github Pages 搭建个人网站

https://help.github.com/categories/github-pages-basics/ 一.个人站点 访问 https://用户名.github.io 搭建步骤 1) 创建个人站点   ->  新建仓库(注:仓库名必须是[用户名.github.io]) 2) 在仓库下新建index.html的文件即可 注意: 1.github pages 仅支持静态网页 2.仓库里面是.html文件 3.个人主页也可以设置主题 二.Project Pages 项目站点 访问 https:

为 iOS 建立 Travis CI

你是否曾经试着为 iOS 项目搭建一台支持持续集成的服务器,从我的个人经验而言,这可不是一个轻松的活.首先需要准备一台 Mac 电脑,并安装好全部所需的软件和插件.你要负责管理所有的用户账户,并提供安全保护.你需要授予访问仓库的权限,并配置所有的编译步骤和证书.在项目运行时期,你需要保持服务器的稳健和最新. 最后,原本你想节省的时间,会发现你花费了大量的时间去维护这台服务器.不过如果你的项目托管在 GitHub) 上,现在有了新的希望:Travis CI.该服务可以为你的项目提供持续集成的支持,

Travis CI -- 免费的集成测试环境

Travis CI,是一个专门为开源项目打造的持续集成环境.如果你有一个放在Github上的开源项目,Travis CI是一个开源完美的CI选择.在Travis CI中 可以直接用Github账号登陆,然后配置自己项目的持续集成.下面说说用Travis CI实习我自己的开源Demo Java Web项目CI的配置. 实现Java Web项目的持续集成是非常简单的,分成2个部分: 第一部分:travis ci中项目配置 在Travis CI中登录Github帐号,选择自己需要持续集成的项目,点击项