持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误,减少一些反复的工作等等,使团队更加有效的开发协作。

持续集成相当于将传统工业的流水线作业的思想应用到现代的软件工业中来。不同之处在于,工业流水线最终出来的是一个一个的产品复制体,但是软件流水线最终出来的是一代一代更新迭代的版本,但是共同点在于:整体产出的效率将极大地增加。

CI解决的问题:

  1. 小步伐的产品迭代
  2. 高频率的版本发布
  3. 随时随地的系统集成
  4. 稳定的系统演进线路图

前言

在本篇文章中,我们将介绍如何将使用 Angular CLI 构建的 Angular 项目,通过 Travis CI 持续集成以及部署到 Firebase 上面。

它的工作流程大致是这样的:

  1. 提交代码到 Github。
  2. 喝一杯咖啡。
  3. TravisCI 开始拉取你的代码,并安装所有的依赖。
  4. 执行 Angular CLI 的 Build 命令,生成发布包。
  5. 将发布包部署到 Firebase 上面。

关于项目的创建,就不再多说,可以参考 Angular 初窥门径[1]:Getting started。

Firebase

Firebase是一家实时后端数据库创业公司,它能帮助开发者很快的写出Web端和移动端的应用。自2014年10月Google收购Firebase以来,用户可以在更方便地使用Firebase的同时,结合Google的云服务。Firebase能让你的App从零到一。也就是说它可以帮助手机以及网页应用的开发者轻松构建App。通过Firebase背后负载的框架就可以简单地开发一个App,无需服务器以及基础设施。

1.登陆 Firebase 控制台,如图:

2.添加项目

点击添加项目按钮,如图:

点击创建项目按钮

3.查看Hosting

到此,部署环境已创建完成。

发布项目

firebase-tools 是一个npm包,用来使用命令行的方式发布项目的工具

安装firebase-tools

npm install -g firebase-tools

登录

firebase login

执行完之后,会自动打开浏览器,并跳转到 google 的登录页,然后授权给 firebase,如图:

注:推荐使用Proxifier全局代理,只使用浏览器代理模式是不行的。

初始化

登录成功之后,切换到你的项目根目录,执行以下命令:

firebase init

输入 y 继续,然后是选择要初始化的功能,在这里选择 3-Hosting 就行了:

然后还有以下几个选项:

  • ? Select a default Firebase project for this directory - 选择你的项目目录
  • ? What do you want to use as your public directory? (public) - 输入 dist ,与 Angular-CLI 工具生成的目录一致。
  • ? Configure as a single-page app (rewrite all urls to /index.html)? (y/N) - 输入 y,因为我们是 SPA 应用。

初始化完成,我们的项目里多了 .firebasercfirebase.json 两个文件。

部署

首先使用 Angular-CLI 的 ng build --prod 命令,生成发布文件,然后再执行以下命令:

firebase deploy

然后在浏览器器中打开 Firebase Hosting 的URL,https://zero-admin.firebaseapp.com/dashboard,访问成功!

获取部署秘钥

在部署成功后,我们需要获取它的秘钥,用于在 CI 中来自动部署:

firebase login:ci

Travis CI

Travis CI 是目前新兴的开源持续集成构建项目,它与jenkins,GO的很明显的特别在于采用yaml格式,简洁清新独树一帜,目前已经支持大部分主流语言了,如:.NET、C、PHP、Ruby、Python、Nodejs、Java、Objective-C等等,Travis CI 与 Github 集成非常紧密,官方的集成测试托管只支持Github项目,不过你也可以通过 Travis CI 开源项目搭建一套你自己的方案。

登录 Travis CI

首先我们要有一个 Github 账号,接下来就打开 Travis CI 的 官网 ,然后使用Github进行授权登录。

创建项目

登录成功后显示如下:

点击上图中的 + 号,选择我们想要创建持续集成的项目,点击设置图标:

然后跳转到设置页面:

我们勾选 Build only if .travis.yml is present, 并且可以看到 Build PushesBuild Pull Requests 默认是勾选的,意味着将我们推送或者合并一个 Pull Requests 的时候,将出发 Travis CI 的构建任务。最后,我们添加了一个环境变量,Key 为 FIREBASE_TOKEN,Value 是我们之前从 Firebase 中获取到的,用来在构建成功后部署到 Firebase 中去。

创建 .travis.yml 文件

接下来,在我们的项目中创建一个 .travis.yml 文件,用来配置 Travis CI 的构建步骤:

language: node_js
node_js:- "8.1.3"branches:only:- masterbefore_script:- npm install -g firebase-tools- npm install -g @angular/cliscript:- ng build --prodafter_success:- firebase deploy --token $FIREBASE_TOKENcache:directories:- $HOME/.npmnotifications:email:on_failure: changeon_success: change

before_script:构建之前要运行的脚本,在这里,我们使用 npm 安装 firebase-tools@angular/cli

script:表示构建的脚本,使用 Angular CLIbuild 命令,来生成部署文件。

cache:表示要缓存的文件,在这里,我们缓存 npm 的资源包。

after_success:构建成功后要执行的脚本,我们是要发布到 Firebase 上面。

notifications:用来配置构建成功或失败时的通知方式。

更加详细的配置可以查看 Travis CI 的 官方文档。

开始持续集成

经过上面对 FirebaseTravis CI 的配置,可以开始我们的持续集成了,首先提交代码到 Github。由于我是在 dev 分支开发,而 Travis CI 中配置的是 master 分支,所以需要合并到 master 分支,才会触发构建。当我们合并到主分支之后,便可以看到 Travis CI 中的构建日志:

等待构建完成,在浏览器中打开我们在 Firebase 中部署的域名 zero-admin,可以看到,已更新为我们刚刚提交的版本,大功告成。

总结

本文详细介绍了 Angular 项目使用 Travis CI 持续集成并部署到 Firebase 的步骤,而 Firebase 需要 VPN 才能访问,在国内还是多有不便,下次再介绍一下其它的部署方式。
附源码地址:zero-admin-web。

转载于:https://www.cnblogs.com/RainingNight/p/continuous-integration-in-angular.html

Angular 小试牛刀[2]:CI(travie+firebase)相关推荐

  1. Angular 小试牛刀[1]:Getting Started

    首先,Angular2 与 Angular1.x 版本没有多大关系,甚至可以说是两个完全不一样的框架,故 Angular 指的是 Angular2 及以上的版本.而 Angular 与 TypeScr ...

  2. 使用Auth0对Firebase和Angular进行身份验证:第1部分

    本文最初发布在Auth0.com博客上 ,并经许可在此处重新发布. 在这个由两部分组成的教程系列中,我们将学习如何构建一个使用Auth0身份验证保护Node后端和Angular前端安全的应用程序. 我 ...

  3. angular 模块构建_如何通过11个简单的步骤从头开始构建Angular 8应用

    angular 模块构建 Angular is one of the three most popular frameworks for front-end development, alongsid ...

  4. angular 模块构建_如何使用Angular和服务人员构建无需Internet即可运行的网站

    angular 模块构建 by Tomiwa 通过Tomiwa 如何使用Angular和服务人员构建无需Internet即可运行的网站 (How to build websites that work ...

  5. angular 渐进_如何使用Angular构建渐进式Web应用

    angular 渐进 介绍 (Introduction) Progressive web apps are web applications built with technologies that ...

  6. firebase auth_如何使用auth和实时数据库构建Firebase Angular应用

    firebase auth by Zdravko Kolev 通过Zdravko Kolev 如何使用auth和实时数据库构建Firebase Angular应用 (How to build a Fi ...

  7. 使用Firebase、Angular 8和ASP.NET Core 3.1保护网站

    目录 介绍 Firebase 计划 你需要什么 创建Web应用程序 Startup.cs Userscontroller.cs Angular应用程序 Angular.json app.module. ...

  8. 使用Firebase、Angular 8和ASP.NET Core 3.1保护网站安全

    本文将向您展示如何创建一个ASP.NET Core Web API项目并使用带有Angular前端的Google Firebase身份验证服务来保护它.我们将创建受保护的API端点,这些端点将允许用户 ...

  9. firebase auth_使用Auth0对Firebase和Angular进行身份验证:第1部分

    firebase auth 本文最初发布在Auth0.com博客上 ,并经许可在此处重新发布. 在这个分为两部分的系列教程中,我们将学习如何构建一个使用Auth0身份验证保护Node后端和Angula ...

最新文章

  1. 让Keras更酷一些:中间变量、权重滑动和安全生成器
  2. MATLAB使用教程(三)——在文件中编程
  3. 在页面中给flash加链接
  4. jetbrains IDEA/pycharm修改代码提示框配色
  5. WebBrowser控件的高级定制+mshtml
  6. html关联程序怎么设置,Win10预览版10102系统中如何设置IE浏览器的关联程序【图文】...
  7. 银河麒麟服务器操作系统常用问题及解决方案
  8. 人脸识别技术 近期文献整理30篇
  9. java poi Excel加密文件导出和下载
  10. 【LensFlare镜头光晕】Unity3D奇葩实现
  11. [ArcPy] 1 ArcPy与栅格(Raster)
  12. caffe.net matlab,【caffe-Windows】微软官方caffe之 matlab接口配置
  13. LPC1768/1769之CAN控制器概述(附库函数下载地址)
  14. 一些电脑清理方法,学起来,总会用到的
  15. mac|我在Android studio踩过的乌龙坑
  16. Java趣味编程(一)
  17. php webcam,如何使用Dynamic Web TWAIN附加组件构建PHP Webcam App
  18. AJAX异步判断注册用户名是否重复
  19. OC 十进制 二进制 转换
  20. 11.软考——必考题型

热门文章

  1. CentOS6.6+Puppet3.7.4分布式部署Nagios监控系统
  2. windows mobile 上面固定比例图像缩放
  3. SVM支持向量机:分类、回归和核函数
  4. 问题 L: 求100以内的素数
  5. oracle 查询表里信息_查看ORACLE 数据库及表信息
  6. FPGA 串口中断_一个严谨的STM32串口DMA发送amp;接收(1.5Mbps波特率)机制
  7. 1024乘风破浪季,3本好书助你平步青云
  8. 【Twitter】时序图神经网络
  9. 今日恐慌与贪婪指数为60 贪婪程度有所缓解
  10. 矿业公司Aurum对其房东提起法律诉讼,要求收回矿机