1 00:00:07,050 --> 00:00:12,050 - If you're building an end to end CI/CD process in AWS, 2 00:00:13,824 --> 00:00:17,260 you have the CodeCommit service that allows you 3 00:00:17,260 --> 00:00:20,090 to manage your source code. 4 00:00:20,090 --> 00:00:21,700 You have the CodeBuild service that takes that source code 5 00:00:24,420 --> 00:00:27,270 and turns it into deployment artifacts. 6 00:00:27,270 --> 00:00:28,670 And then you have CodeDeploy 7 00:00:30,040 --> 00:00:34,920 that actually deploys those artifacts to the resources. 8 00:00:34,920 --> 00:00:39,840 We can think of CodePipeline as an orchestration service 9 00:00:39,840 --> 00:00:42,940 that manages all of the others. 10 00:00:42,940 --> 00:00:47,940 And so, with CodePipeline, it is a region scoped service 11 00:00:47,970 --> 00:00:50,980 and it's designed around continuous delivery. 12 00:00:50,980 --> 00:00:54,450 The continuous integration part is actually handled 13 00:00:54,450 --> 00:00:59,450 by CodeBuild, instead, but you can invoke CodeBuild 14 00:01:00,740 --> 00:01:04,077 from a CodePipeline pipeline. 15 00:01:05,741 --> 00:01:08,950 And CodePipeline is designed to handle, again, 16 00:01:08,950 --> 00:01:11,410 the end to end process, the build, 17 00:01:11,410 --> 00:01:14,040 the test and the deploy processes, 18 00:01:14,040 --> 00:01:18,463 even though it's not doing any of those within this service. 19 00:01:20,030 --> 00:01:23,760 CodePipeline allows you to model your workflow 20 00:01:23,760 --> 00:01:26,210 where you can see it in a visual format 21 00:01:26,210 --> 00:01:27,700 so that you understand 22 00:01:27,700 --> 00:01:31,283 which steps are being performed in which order. 23 00:01:32,640 --> 00:01:37,640 It has integration points with the other CodeStar services 24 00:01:37,770 --> 00:01:39,963 in AWS, as well as some others. 25 00:01:40,930 --> 00:01:43,240 It allows you to use plugins as well 26 00:01:43,240 --> 00:01:47,540 that are either pre-built or you can create your own custom. 27 00:01:47,540 --> 00:01:52,540 And all of the template files are easy to understand 28 00:01:53,000 --> 00:01:54,973 and in a declarative format. 29 00:01:56,930 --> 00:02:00,850 So, let's take a look at an example workflow 30 00:02:00,850 --> 00:02:04,413 where we're using GitHub or CodeCommit. 31 00:02:05,760 --> 00:02:09,063 The source code gets checked in and committed. 32 00:02:09,900 --> 00:02:14,020 And let's say that this is enough of an action 33 00:02:14,020 --> 00:02:17,470 to trigger a new build and deploy 34 00:02:17,470 --> 00:02:19,093 to a particular application. 35 00:02:21,900 --> 00:02:26,900 CodePipeline will recognize the act of committing code into, 36 00:02:28,090 --> 00:02:30,460 and let's say it will use CodeCommit, 37 00:02:30,460 --> 00:02:32,950 that CodeCommit act can then be used 38 00:02:32,950 --> 00:02:37,263 to trigger the pipeline in the CodePipeline service. 39 00:02:38,260 --> 00:02:42,840 From there, it's gonna create a build action. 40 00:02:42,840 --> 00:02:45,980 The build action, defined in the template, 41 00:02:45,980 --> 00:02:50,980 will then create a build artifact from that source code, 42 00:02:51,240 --> 00:02:54,980 using CodeBuild and all of its features, 43 00:02:54,980 --> 00:02:57,470 including the ability to test that artifact 44 00:02:57,470 --> 00:02:59,720 to make sure that everything worked properly. 45 00:03:01,710 --> 00:03:04,680 If you require actual unit tests to be performed, 46 00:03:04,680 --> 00:03:07,003 as well as maybe other regression testing, 47 00:03:08,700 --> 00:03:11,330 CodePipeline can do that as well. 48 00:03:11,330 --> 00:03:14,300 But, again, it uses the CodeBuild service 49 00:03:14,300 --> 00:03:17,023 to execute those tasks. 50 00:03:18,400 --> 00:03:22,410 And once you have a proper deploy artifact, 51 00:03:22,410 --> 00:03:27,410 you can then use a deploy action within CodePipeline 52 00:03:28,140 --> 00:03:32,550 to deploy that artifact to each of the end resources 53 00:03:32,550 --> 00:03:35,360 with the ability to do different types of deployments, 54 00:03:35,360 --> 00:03:39,223 like canary deployments or blue/green deployments. 55 00:03:40,620 --> 00:03:43,190 And then, once you reach the end, 56 00:03:43,190 --> 00:03:47,920 you can perform extra tests, like integration testing, 57 00:03:47,920 --> 00:03:51,840 which again goes back and uses the CodeBuild service 58 00:03:51,840 --> 00:03:53,593 to complete those tests.