AWS CodePipeline is the prime AWS native CI/CD orchestration tool, which enables you to define your software release process as a workflow. But there are other tools available on the market, such as Jenkins, Gitlab, etc., which also help to create CI/CD pipelines.
Then why do we use CodePipeline?
- It is an AWS-managed Service where AWS does the heavy lifting for us, which means we do not need to manage or maintain any servers, which is a great relief.
- It is also highly available and reliable.
- If you plan to deploy your applications and infrastructure on AWS
- (eg: S3,ECS,Cloudformation..) Then it is much easier to do with CodePipeline because it has many seamless integrations with other AWS services, so you do not need to install any plugins (e.g., Jenkins).
Let's discuss the possible integrations available in the AWS Code Pipeline Service.
Typically, any CI/CD pipeline should have a source code repository. If you are using CodeCommit, Bitbucket, Github, or S3 to store your source code, then you should be able to use CodePipeline to orchestrate your CI/CD pipeline.
However,if you are dealing with container-based applications, you may need to integrate with container registries. Then you can easily integrate ECR with CodePipeline.
You have two ways of building the code. AWS native way is using CodeBuild, Otherwise, you can integrate with Jenkins if you are required to integrate with Jenkins. My preference is using CodeBuild because
It is a fully managed service(no servers to manage)
Continuously scaling
Pay only for what you use
You can easily integrate KMS for encrypting artifacts
But Jenkins is a very mature product with many plugins besides there could be situations where you must use Jenkins to get your work done(rarely).
Both CodeBuild and Jenkins can be used, not just for building but also for testing.
Also, there are more interesting integrations available:
Device Farm: Device Farm is a mobile app testing service and it supports various application types and test frameworks/types(e.g.:-Appium).
BlazeMeter - Application Performance Testing(extends Jmeter capabilities)
Micro Focus StormRunner Load - Another Performance testing tool
Ghost Inspector - used for Web UI testing
Runscope API monitoring - API testing and monitoring tool
Synk- scan your application for open source security flaws and enables you to deliver secure applications.
Moreover, when it comes to deployment, you have miscellaneous actions/integrations to services available in AWS Code Pipeline.
Code Deploy - It is one of the "go-to" services if you want to deploy your application on an on-premises instance, EC2, Lambda, or ECS with a variety of essential deployment options.(eg:- Blue/Green,Canary).
CloudFormation - This integration is extremely useful if your CI/CD pipeline requires interaction with the CloudFormation service.
App Config - A better way of deploying your application configuration with different deployment strategies
OpsWorks - If you want to deploy your code on OpsWorks Stack, this option is available through Code Pipeline.
Service Catalog- if you want to provision Service Catalog products through a CI/CD pipeline, yes! it is possible.
Elastic Beanstalk - Code Pipeline can deploy your web application onto Elastic Beanstalk environment.
Likewise, it has direct integrations with ECS and S3 as well.
If you need to integrate a product or service which has no direct integration with AWS Code Pipeline, then you still have your AWS Lambda friend to make it happen.
Finally, if your pipeline demands even more sophisticated workflows, you could easily delegate from Code Pipeline to Step functions. Step Functions has great capabilities such as automatic error handling, a wider range of AWS service integrations, handling long-running tasks and many more to make your life easier. ;-)
Top comments (0)