Continuous integration and continuous delivery are two software engineering approaches used by development teams to produce software in an efficient, repeatable way. In this video, learn how to plan a CI/CD pipeline with Jenkins as the central element.
- [Instructor] Continuous integration and continuous delivery, are two software engineering approaches that let development teams produce software in an efficient and repeatable way. With continuous integration, developers work on their code in a local environment, and commit their changes to a shared repository on a regular basis. Their code can then be combined, or in other words, integrated with code from other members of the team, or any existing code. Using this method, developers can find and resolve errors more quickly, compared to waiting until all the code for an application is complete, and integrating everything at once.
Continuous delivery is a partner to the continuous integration process. Continuous delivery enables developers to build and release their software quickly and repeatedly. By automating the build process, developers can trigger builds from web hooks and use an automation framework, like Jenkins, to build and deploy different versions of the code to different environments. Lets discuss how our current build environment will fit into a basic CI/CD pipeline. CI/CD pipelines start with the developer.
In this case, that might be you. You'll work on your code in a local environment and commit the changes to GitHub. GitHub will be used to track changes and trigger any upstream automation via web hooks. That's where our Jenkins build environment comes in. Jenkins will kick off a job on the build server. The build server will download the updated code and run the scripted commands that deploy the application to Elastic Beanstalk. In Elastic Beanstalk, the environment is updated with the new code, and the application can be made available for testing, verification, or other steps, in the lifecycle of the application.
After deploying the application, Jenkins can also send notifications to the developers, letting them know the status of the deployment, the health of the application environment, and any other information that might be needed for the next step in developing the application. This process is repeated until the application is shipped to production, and even then, is still used to deploy updates and new features. With this blueprint, lets build out the rest of our CI/CD pipeline.
- Creating a Jenkins master instance
- Installing Java, Jenkins, and NGINX
- Creating SMTP credentials for SES
- Planning a build environment
- Creating roles, groups, and key pairs
- Creating a build server
- Connecting a master instance to a build server
- Planning a CI/CD pipeline
- Creating a GitHub repository for application code
- Deploying to Elastic Beanstalk from GitHub
- Adding email notifications
- Removing AWS resources