trackr: An AngularJS app with a Java 8 backend – Part III
这是最后我们对trackr系列的一部分。在过去的两的博文中,我们已经向您展示我们使用的工具和框架构建后端和前端。如果你错过了前面的帖子现在你可能会想读他们赶上来.
在本帖里,我们将强调整个开发过程并给出一些见解对我们使用的工具。
Development Process
我们使用Confluence来outline我们的需求,这是一个超屌的工具,广泛的规范,它还增加了协作功能。所以每个人都可以看到和评论的需求,直到一切都被定义。这也是一个好地方用来放线框图。
基于规范我们创建了多个更小的用户描述可以实现。在开发过程中我们当然想遵循敏捷方法。因为我们无法坚持一个固定的时间,我们决定使用看板而不是Scrum。在JIRA我们已经建立了一个敏捷看板来跟踪进展。在这里你可以看到我们的快照trackr看板在开发过程中。

未来我们使用Git作为SCM。我们唯一的中央仓库在GitHub。因为我们的团队仍然相当小的我们还没有想到一个非常复杂的工作流。我们遵循的原则有一个主分支,总是指向最新的生产版本,一个发展分支的特性和分支机构(可能是本地的)功能。
我们没有提交任何前端或后端依赖Git。虽然the trouble we had with Bower之后也许会是一个好主意来提交这些依赖关系。
除此之外,我不认为有太多要说的关于trackr和Git-一旦你精通它,它不会妨碍你的。
Continuous Integration
我们想要一个trackr持续集成方法。在一个功能是构建服务器合并到开发分支应该看看变化,运行所有测试,构建构件并将其部署到我们的测试系统。我们想尝试一些除了Jenkins,决定使用Jetbrains的 TeamCity。
给TeamCity源代码后发现build.gradle文件并立即提出了一个Gradle 构建。我们只有设置目标和TeamCity很好去。因为我们使用了Gradle包装我们没有重新安装它。
对于前端来讲,Grunt, Karma 和 Bower是必要的但只是在构建配置的路径里。
所有其他分支机构只是测试,不用build。

That is our build overview.
使用这个插件plugin for Karma 甚至可以把 Javascript tests报告给TeamCity.

部署是通过Gradle无缝地工作。
TeamCity也将很好地集成到IntelliJ IDEA。你可以订阅构建和得到通知。如果如构建失败,它甚至会发送异常堆栈轨迹IDE。理论上远程调试应该工作,但是我们不能让它跑了。此外,TeamCity和JIRA GitHub库连接。因此我们可以把问题提交的消息数量工具会处理他们和显示额外的信息。总之我们没有推动TeamCity其局限性,但它很好地为我们服务。
对于Javascript我们已经用JSHint涵盖一些代码质量检查,而对于java,我们决定 SonarQube。Java 8支持24.3.2014只是包含在这个星期,所以我们必须等到。只有一个插件,一般Java插件支持Java 8,PMD仍然不工作。可能最有趣的Java检查在这个插件,所以最终我们从Sonar没有得到太多。
由于我们的持续集成测试系统总是反映了最近的应用程序的状态。每个人都可以登录和经验为自己最近的特性。但是为了生成容易分享短电影,莫里茨开始创建小动画GIF文件使用QuickTimePlayer OSX记录屏幕的一部分,然后ffmpeg电影文件转换为GIF和ImageMagick转换为优化它的大小。webm(希望)使用以下命令在角落。我们分享视频imgur或嵌入到自己的网站使用HTML5视频标签。
ffmpeg + convert
ffmpeg -i movie.mov -r 15 movie.gif
convert movie.gif -layers Optimize movie_optimized.gif
# or webm, assuming the libvpx-720p preset is present
ffmpeg -i movie.mov -vpre libvpx-720p -b 2500k -an -f webm -y movie.webm
Database Migrations
我们使用Flyway来管理我们的数据库变更。通过使用flyway,我们可以提供所有相关的SQL脚本模式变化和应用这些Flyway照顾。这有助于保持不同的环境同步。Flyway脚本顺序枚举所以Flyway可以找出必须应用这些脚本的顺序。它还不断的引用最近应用脚本应用所以只有更新的脚本.
我们仍然做实际的手动部署。虽然对我们来说,这是容易出错的工作(比如有人忘记调用Flyway之前的部署)。因此我们正在一个工具来自动化部署到我们的环境。第一个版本已经存在,我们就将开放源码工具已经达到一个稳定状态。所以请继续关注!
想加入团队吗?我们正在招聘!
我们在不断地寻找新的小伙伴来加入我们的团队。如果到目前为止你喜欢你所读的,那么快到碗里来- job board or drop us a line!
该系列源码:
https://github.com/techdev-solutions/trackr-frontend
https://github.com/techdev-solutions/trackr-backend
trackr: An AngularJS app with a Java 8 backend – Part III的更多相关文章
- trackr: An AngularJS app with a Java 8 backend – Part II
该系列文章来自techdev The Frontend 在本系列的第一部分我们已经描述RESTful端建立在Java 8和Spring.这一部分将介绍我们的第一个用 AngularJS建造的客户端应用 ...
- trackr: An AngularJS app with a Java 8 backend – Part I
该系列文章来自techdev 我想分享在techdev公司开发的项目-trackr-的一些最新的见解.trackr是一个用来跟踪我们的工作时间,创建报告和管理请假的web应用程序.做这个程序的目的有两 ...
- trackr: An AngularJS app with a Java 8 backend – Part IV 实践篇
REST API对于前后端或后端与后端之间通讯是一个好的接口,而单页应用Single Page Applications (SPA)非常流行. 我们依然以trackr为案例,这是一个跟踪工作时间 请假 ...
- 2.1:你的第一个AngularJS App
本章,带你体验一个简单的开发流程,将一个静态的使用模拟数据的应用,变成具有AngularJS特性的动态web应用.在6-8章,作者将展示如何创建一个更复杂,更真实的AngularJS应用. 1.准备项 ...
- eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN
eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...
- ASP.NET Web API 2 external logins with Facebook and Google in AngularJS app
转载:http://bitoftech.net/2014/08/11/asp-net-web-api-2-external-logins-social-logins-facebook-google-a ...
- IOS IAP APP内支付 Java服务端代码
IOS IAP APP内支付 Java服务端代码 场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purcha ...
- APP接口自动化测试JAVA+TestNG(一)之框架环境搭建
前言 好久不曾写点啥,去年换到新公司组测试团队与培养建设花费大量时间与精力,终于架构成型与稳定有时间可以打打酱油了.很久没有总结点啥,提笔想写的内容太多,先放APP接口自动化的内容吧,这个估计大家比较 ...
- 微信APP支付(Java后台生成签名具体步骤)
public class PayCommonUtil { //定义签名,微信根据参数字段的ASCII码值进行排序 加密签名,故使用SortMap进行参数排序 public static String ...
随机推荐
- iOS的影片播放 MediaPlayer 和 AVPlayer(转)
分类: Iphone2013-01-28 16:19 5230人阅读 评论(0) 收藏 举报 在iOS開發上,如果遇到需要播放影片,如開機動畫…,我們很習慣地會使用MediaPlayer來播放影片,因 ...
- C++中的仿函数,std::function和bind()的用法
1.仿函数:又叫std::function,是C++中的一个模板类 2.C语言中的函数指针: int add(int a,int b) { return a+b; } typedef int (*f ...
- NAND的一些相关概念
chipsize:整个NAND FLASH 的大小,单位为MB pagesize:一页的大小,单位为字节Byte erasesize:最小擦除大小,单位为字节Byte NAND写操作基本单位是页, ...
- bnuoj 4207 台风(模拟题)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=4207 [题意]:中文题,略 [题解]:模拟 [code]: #include <iostrea ...
- Careercup - Facebook面试题 - 6026101998485504
2014-05-02 10:47 题目链接 原题: Given an unordered array of positive integers, create an algorithm that ma ...
- 1072: [SCOI2007]排列perm - BZOJ
Description 给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0).例如123434有90种排列能被2整除,其中末位为2的有30种,末位为4的有60种.Input ...
- java 并发编程
闭锁 一种可以延迟线程的进度直到其到达终止状态.可以用来确保某些活动直到其他活动都完成后才继续执行 例如: 确保某个计算在其需要的所有资源都被初始化了之后才继续执行. 确保某个服务在其他依赖的服务都启 ...
- Hibernate各种主键生成策略与配置详解【附1--<generator class="foreign">】
1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...
- 【UVA】【11762】Race to 1(得到1)
数学期望/马尔可夫过程 DP/记忆化搜索 刘汝佳老师白书上的例题…… //UVA 11762 #include<vector> #include<cstdio> #includ ...
- java中判空
一.概述 java中判等似乎很简单,==用来判断对象引用(内存地址)是否相同,equals用来判断值是否相同.你可以试用String对象轻松区分这一点. 那么在null判等(也就是判空操作)时呢? 可 ...