Reflective Analysis Report: DevOps
Pipeline
Description of Challenges and Solutions:
Challenge: Consistent Testing in Staging Environment
One of the challenges faced during the pipeline design was ensuring
consistent testing in the staging environment. This challenge was
addressed by implementing containerization.
- *Solution:* Implemented containerization for creating isolated
test environments mirroring production.
Docker Containers were used to create isolated test environments that
mirrored the production setup.
This approach ensured that testing could be carried out in an environment
closely resembling the production environment, enhancing the reliability
of the testing process.
Benefits and Drawbacks Discussion:
- *Benefits:* CI/CD significantly reduced manual intervention,
leading to faster deployments.
Reduced Manual Intervention: The implementation of
Continuous Integration and Continuous Deployment (CI/CD) has
significantly reduced manual intervention in the deployment
process.
Faster Deployments: CI/CD practices have led to faster
deployments, facilitating a quicker release cycle.
- *Drawbacks:* Challenges may arise with complex applications
and managing a large number of containers.
Complex Applications: Challenges may arise with complex
applications, where managing a large number of containers
becomes intricate.
Container Management: Managing and orchestrating containers
can pose difficulties, particularly as the application architecture
scales.
Application of DevOps Principles:
Automation: DevOps principles, particularly automation, were applied
consistently throughout the pipeline.
- DevOps principles, especially automation, were applied throughout the
pipeline to streamline processes and enhance collaboration between
teams.
Automated processes streamlined development, testing, and deployment,
promoting efficiency and collaboration between different teams involved
in the pipeline.
Suggestions for Improvement:
Enhancing Automated Testing: To further enhance the pipeline, it is
recommended to incorporate more comprehensive automated testing.
This includes exploring additional testing frameworks and scenarios to
improve the coverage of tests.
- To enhance the pipeline, consider integrating more comprehensive
automated testing and additional monitoring tools. This would improve
error detection and recovery.
Comprehensive testing contributes to better error detection and ensures
the reliability of the application.
Additional Monitoring Tools: Integration of additional monitoring tools
is advised to enhance error detection and recovery.
Monitoring tools provide insights into the performance and health of the
application, allowing for proactive identification and resolution of issues.
Guided Steps To Create CI/CD
Pipeline with AWS, Jenkins, Docker
with Github
1. Created EC2 Instance – Ubuntu Free Tier
2. Connected with EC2 Instance – using AWS Connect
3. Run below mentioned commands – One by one
Step-1 Install JAVA
>> sudo apt update
>>Java Version Installation on ubuntu machine
>> sudo apt install openjdk-11-jre
>> java --version -----------------(Java Installed now)
Step-2 Install JENKINS in the ubuntu machine – Below Commands
executed in order
>> sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \
https://pkg.jenkins.io/debian/jenkins.io-2023.key
>> echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
>> sudo apt-get update
>> sudo apt-get install jenkins
Keys used for signing up apt packges
pub rsa4096 2023-03-27 [SC] [expires: 2026-03-26]
63667EE74BBA1F0A08A698725BA31D57EF5975CA
uid Jenkins Project
sub rsa4096 2023-03-27 [E] [expires: 2026-03-26]
Following Commands executed in order:
>> sudo systemctl enable Jenkins
>> sudo systemctl start jenkins
>> sudo systemctl status jenkins
4. Now Using the Public Ip of EC2 we will launch Jenkins on Browser
It needs password which needs to be get from below command
>> sudo cat /var/lib/jenkins/secrets/initialAdminPassword
After putting password we will see the next screen of Jenkins …
5. Now we have successfully installed Jenkins on EC2 Linux Instance –
Getting Started with Jenkins
Now Create user - admin for Jenkins
6. Jenkins Dashboard below
Now create a first job – devops pipeline
7. Install the transport https certification common software packages
8. Install Docker into EC2 instance
>> Check Docker Service status after installation is completed:
9. Restarted Jenkins and Add Generate SSh keys for signing and
authentication
10.Now Added, Email Notification script and Selenium testing script – Build
Succeeded!
Jenkins Build Log Analysis:
Pipeline Initialization:
The pipeline is triggered by user Shreya Shetty.
Jenkinsfile obtained from the GitHub repository
https://github.com/Shreyashettys97/jenkins-todo-cicd.git.
Build Stage:
Docker image "my-flask-app" is built using the provided
Dockerfile.
Dependencies are installed, and the image is tagged and
named "shreya525/sample_web_app."
Setup Stage:
BrowserStack is configured for testing with Selenium.
BrowserStack test report generation is initiated but
encounters an error due to build name issues.
Test Stage:
The application is tested using pytest, and the test session
reports one passed test.
Deploy Stage:
Docker login is performed with credentials.
The Docker image is pushed to the specified repository.
Post Actions:
Email notification is sent to the specified recipient
(L00179089@atu.ie).
Docker logout is executed to remove login credentials.
11. Need to test the Email Functionality - Check email inbox for build
status!
Conclusion:
The Jenkins build log indicates successful execution of the CI/CD pipeline.
Each stage, from initialization to deployment, is detailed.
The build successfully addresses challenges, such as consistent testing,
through containerization.
Automation is evident in Docker image creation, testing, and deployment
stages.
The log provides transparency into the entire process, facilitating
troubleshooting and future improvements.
Featured Screenshot:
References:
1. Amazon Web Services (AWS) Documentation:
o In-text citation: (AWS Documentation, 2023)
o Reference: Amazon Web Services. (2023). "AWS Elastic Compute
Cloud (EC2) - User Guide." [online] Available at:
[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/]
(Accessed: 9 November 2023).
2. Jenkins Official Documentation:
o In-text citation: (Jenkins Documentation, 2023)
o Reference: Jenkins. (2023). "Jenkins Continuous Integration and
Continuous Delivery (CI/CD) - User Handbook." [online] Available at:
[https://www.jenkins.io/doc/] (Accessed: 9 November 2023).
3. Docker Documentation:
o In-text citation: (Docker Documentation, 2023)
o Reference: Docker. (2023). "Docker Documentation: Get Started."
[online] Available at: [https://docs.docker.com/get-started/]
(Accessed: 9 November 2023).
4. GitHub:
o In-text citation: (GitHub, 2023)
o Reference: GitHub. (2023). "GitHub Guides: Understanding the
GitHub Flow." [online] Available at:
[https://guides.github.com/introduction/flow/] (Accessed: 9
November 2023).
5. Gmail Notification Setup Documentation:
o In-text citation: (Google Documentation, 2023)
o Reference: Google. (2023). "Google Workspace Admin Help: Set up
Gmail notifications." [online] Available at:
[https://support.google.com/a/answer/1072073?hl=en] (Accessed: 9
November 2023).