1 00:00:00,000 --> 00:00:04,935 [MUSIC] 2 00:00:04,935 --> 00:00:08,656 Hi, I'm Craig and I'm a developer, and I would love to talk with you about 3 00:00:08,656 --> 00:00:12,370 the professional development process of continuous integration. 4 00:00:12,370 --> 00:00:17,010 So as a professional developer, you know every application should be tested. 5 00:00:17,010 --> 00:00:20,770 But just because you've got the application tested 6 00:00:20,770 --> 00:00:23,000 doesn't stop you from running into problems. 7 00:00:23,000 --> 00:00:25,973 Now for example [SOUND] you might be working with a team and 8 00:00:25,973 --> 00:00:28,758 everybody might be introducing lots of features and 9 00:00:28,758 --> 00:00:32,443 it could be causing merge conflicts or other undesirable behavior. 10 00:00:32,443 --> 00:00:36,059 So with all these features and flight at the same time it gets pretty hard 11 00:00:36,059 --> 00:00:38,240 to know how they're gonna work together. 12 00:00:38,240 --> 00:00:42,570 Now this process of combining code is known as integrating the code together. 13 00:00:42,570 --> 00:00:45,320 This is where integration testing concepts are rooted. 14 00:00:45,320 --> 00:00:48,040 These problems can get big and be difficult to manage and 15 00:00:48,040 --> 00:00:53,080 oftentimes if it's not dealt with your product might not be released on time. 16 00:00:53,080 --> 00:00:55,326 [SOUND] Often your code is expected to run on different environments. 17 00:00:55,326 --> 00:00:58,620 You might develop on a Mac or Windows but you deploy to Linux. 18 00:00:58,620 --> 00:01:03,170 Now in Java we're pretty lucky because as long as there's a JVM implementation, 19 00:01:03,170 --> 00:01:04,400 our code you just work right? 20 00:01:04,400 --> 00:01:07,120 That's what that write once run anywhere is all about. 21 00:01:07,120 --> 00:01:09,830 However, we might be packaging up a library and 22 00:01:09,830 --> 00:01:13,360 we need to make sure that it works on different JVM levels. 23 00:01:13,360 --> 00:01:16,135 Everybody knows that they should test the build, but 24 00:01:16,135 --> 00:01:18,301 it just takes too long, am I [SOUND] right? 25 00:01:18,301 --> 00:01:21,900 I mean it sure would be nice to have that build process run elsewhere. 26 00:01:21,900 --> 00:01:24,680 Instead of tying up your local machine, right? 27 00:01:24,680 --> 00:01:28,250 This is where a development practice called continuous integration comes in. 28 00:01:28,250 --> 00:01:32,856 Continuous Integration [SOUND] requires developers to merge code into a shared 29 00:01:32,856 --> 00:01:34,819 repository several times a day. 30 00:01:34,819 --> 00:01:37,514 And what that does is it helps detect build problems and 31 00:01:37,514 --> 00:01:40,980 it helps developers find errors easily by exposing them. 32 00:01:40,980 --> 00:01:45,920 Now if you commit infrequently it makes error handling much more troublesome. 33 00:01:45,920 --> 00:01:49,070 If you wait until you get ready to launch the product to see how integration is 34 00:01:49,070 --> 00:01:51,640 working, it's bound to cause a delay. 35 00:01:51,640 --> 00:01:52,510 In most cases, 36 00:01:52,510 --> 00:01:57,030 continuous integration providers integrate with a version control system like GitHub. 37 00:01:57,030 --> 00:02:00,030 There are a number of continuous integration services. 38 00:02:00,030 --> 00:02:01,032 And in this workshop, 39 00:02:01,032 --> 00:02:03,951 we're gonna be taking a look at the very popular [SOUND] Travis CI. 40 00:02:03,951 --> 00:02:07,617 There's also [SOUND] circleCI [SOUND] and Bamboo, it's an Atlassian product which 41 00:02:07,617 --> 00:02:10,495 you might wanna look into if you're using Atlassian products. 42 00:02:10,495 --> 00:02:15,280 Codeship [SOUND] as well as Jenkins, let's explore Travis CI in the very next video.