- If you're building an end to end CI/CD process in AWS,
you have the CodeCommit service that allows you
to manage your source code.
You have the CodeBuild service that takes that source code
and turns it into deployment artifacts.
And then you have CodeDeploy
that actually deploys those artifacts to the resources.
We can think of CodePipeline as an orchestration service
that manages all of the others.
And so, with CodePipeline, it is a region scoped service
and it's designed around continuous delivery.
The continuous integration part is actually handled
by CodeBuild, instead, but you can invoke CodeBuild
from a CodePipeline pipeline.
And CodePipeline is designed to handle, again,
the end to end process, the build,
the test and the deploy processes,
even though it's not doing any of those within this service.
CodePipeline allows you to model your workflow
where you can see it in a visual format
so that you understand
which steps are being performed in which order.
It has integration points with the other CodeStar services
in AWS, as well as some others.
It allows you to use plugins as well
that are either pre-built or you can create your own custom.
And all of the template files are easy to understand
and in a declarative format.
So, let's take a look at an example workflow
where we're using GitHub or CodeCommit.
The source code gets checked in and committed.
And let's say that this is enough of an action
to trigger a new build and deploy
to a particular application.
CodePipeline will recognize the act of committing code into,
and let's say it will use CodeCommit,
that CodeCommit act can then be used
to trigger the pipeline in the CodePipeline service.
From there, it's gonna create a build action.
The build action, defined in the template,
will then create a build artifact from that source code,
using CodeBuild and all of its features,
including the ability to test that artifact
to make sure that everything worked properly.
If you require actual unit tests to be performed,
as well as maybe other regression testing,
CodePipeline can do that as well.
But, again, it uses the CodeBuild service
to execute those tasks.
And once you have a proper deploy artifact,
you can then use a deploy action within CodePipeline
to deploy that artifact to each of the end resources
with the ability to do different types of deployments,
like canary deployments or blue/green deployments.
And then, once you reach the end,
you can perform extra tests, like integration testing,
which again goes back and uses the CodeBuild service
to complete those tests.