Hello friends and welcome back to my channel
I am Ashfaque and in today's video we will build a complete CI/CD pipeline using Jenkins, Maven,
Docker and the Elastic Kubernetes Services (EKS) in our CI/CD pipeline if developer
makes any changes on the application repository on the GitHub then it will
trigger the CI job of the Jenkins which will pull the code from the application repository and it will build and test the artifact using maven then we will do the static code
analysis of the artifact using SonarQube then we will build the Docker image and
we will push that Docker image to the Docker hub, after that we will is scan the docker
image using Trivy scan, here our CI job will end once our CI job has been completed our
CD job will automatically get trigger and our CD job will first update the build number
or the release number in the deployment yaml file on the git ops repository on the GitHub and
then ArgoCD will pull the manifest file, updated manifest file from the GitHub repository and it
will deploy the resources on the EKS cluster and once our CD job is finished it
will send the notification over the slack or it can send the email also, so
let's start building our project first thing is we need to create the
Jenkins Master virtual machine on the AWS console, I will go to instances, launch instance I will give the name Jenkins master I will select OS as Ubuntu, AMI I will select which is free tier eligible instance type t2 micro, key
pair, I will create new key pair and hard disk I will select 15 GB launch instance I will copy the public IP of the virtual machine
and I will access it from my local system I will select the key pair I will first do do the system update I will open the hostname file and I will change the hostname to Jenkins master I have changed the hostname of the virtual
machine so I will go ahead and reboot my system system is rebooting meanwhile I will go to
AWS console, I will go to Security Group and I will add the inbound rule
because Jenkins works on the port 8080 reboot completed I will
reconnect to Virtual Machine I will install the Java with this command if I give the command Java hyphen version so this is the version of the Java which has been installed in my system I will go to Jenkins documentation page and
under the Ubuntu I will copy this weekly release and I will paste it here on my server
to start the installation of Jenkins this command will enable the Jenkins
service to start at every boot I will now give the command
to start the Jenkins service and if I give the command system status
Jenkins so Jenkins is running in my server now I will again go to AWS console
and create one new virtual machine called Jenkins agent name I will give Jenkins agent I will select Ubuntu I will select my key pair hard disk I will provide 15 GB launch instance I will copy the public IP of the virtual machine
and I will access it from my local system I will do the system update I will open the hostname file and I will change the hostname of this
virtual machine to Jenkins agent I have changed the hostname of this virtual
machine so I will have to reboot my system reboot completed I will reconnect to my machine I will go ahead and install the Java in my server Java has been installed in my system
all the builds will happen on this Server so I will go ahead and install the
docker in this server with this command I will give the full rights to my current user on the docker with this command so I have added my current user on the group
Docker so I will go ahead and reboot my system restart completed I will reconnect to my machine and I will open the file SSH configuration file and in this file I will make public key authentication yes and I will uncomment this also, authorize key file I will save and close this file I will go to Jenkins master and here also I will open the same file and I will uncomment the public key authentication and authorized key file, I will
save and close this file also I will reload the SSH service on the agent also I will reload the SSH service I will now go to Jenkins Master node and here I will generate the
SSH key with this command SSH hyphen Keygen okay so key has been generated I'm inside the slash home slash Ubuntu I will go to dot SSH directory and inside this directory I am having this
public key and this is the private key so I will open the public key and I will copy the complete
content of this key file and I will go to Jenkins agent and on the Jenkins agent I'm inside the /home/ubuntu, I will go to dot SSH directory and here I am having authorized
keys file, I will open this file and I will paste the copied content here and I will save this file so if I open this file inside the file I am
having the public key of the master node I will now copy the public IP
address of the Jenkins master and I will open it with the port 8080 on the Jenkins master I will open this file and I will copy and paste this password here install suggested plugins I will give the username clouduser, I will set the password save and continue save and finish just start using Jenkins I will go to manage Jenkins and under system configurations I will go to nodes built-in node configure and number of executors
I will make zero and I will save it I will again go to manage Jenkins nodes new node I will give the name Jenkins agent permanent agent, create number of executors I will make two remote root directory I will give /home/ubuntu which is the home directory
of the Ubuntu user on the agent server label I will give Jenkins agent usage use this node as much as possible launch method I will select launch agents via SSH host I will copy the private IP address of the agent and I will paste it
here because both are in the same VPC if they are not in same VPC you will have
to provide here the public IP address credentials we don't have any
credential I will click on Add, Jenkins kind SSH username with private key ID I will give here Jenkins agent description I will give Jenkins agent, username Ubuntu private key, enter directly I will go to Master node
and this is the private key I will copy the private key I will click here on Add and I will paste the private key here and I will click here on Add under the credentials I will select the credentials which we have just created and host key verification strategy I will select non-verifying verification strategy and I will click on Save so agent has been added to my Jenkins I will go to my dashboard and I will
create the new job, I will give the name as test pipeline, okay pipeline script, I will select hello world, apply, save and I will do the build now so the build completed successfully on the agent which means our connectivity between master node and the
agent is successful, I will delete this test job I will now install and configure the few plugins
on the Jenkins so I will go to manage Jenkins plugins, available plugins and I will search here maven, I will select this plugin Maven integration and pipeline Maven integration and I will also search here eclipse and I will select this Eclipse Timurin installer and I will click on install okay so installation completed I will go to home and now I need to configure
these plugins so I will go to manage Jenkins tools I will go to Maven installations, add maven, name I will give Maven3 and this name will be recalled in the pipeline
script, I will tick here install automatically apply and Save I will again go to tools and this time I will go to
jdk installations, add jdk and name I will give Java 17 this name again
will be recalled in the pipeline script I will tick on install automatically I will click here add installer and I will select install from adaptian.net and in the drop down I will select the jdk version 17.0.5+8 this is the version we will use for the jdk apply and Save I will now go ahead and add the
GitHub credentials to to the Jenkins so I will go to Jenkins dashboard, manage Jenkins credentials under security and here in the drop down I will click on add credentials username with password username I will give my username for the GitHub password I will paste here
my personal access token if you want to create the personal
access token on the GitHub go to settings developer setting personal access token, token classic and you can generate the token here ID I will give the github description I will give github, we will recall this
ID in the pipeline script, I will click on create okay so I will go to my GitHub account
and this is my Repository sorry I will go to my Repository this is my repository Register App on this Repository I will create the Jenkins file I will give the name Jenkins file and I will start creating the pipeline script so first of all I will define
my agent in the pipeline so this is our agent name in the Jenkins
Jenkins agent and then I will recall the tools which are actually the plugins which we have configured in the Jenkins so first tool is Java 7 which is the name we
have given in the previous step and this is the name for the maven plugin maven 3. uh both we have defined in the Jenkins, in the previous step okay so we have defined our agent
and we have recalled the tools now we will start creating the stages so under this stage we will define our first stage so our first stage will actually clean up the
workspace we have given the name cleanup workspace it will clean our workspace now I will go ahead and create our second
stage which would be checked out from SCM so our second stage is check out from
SCM and this is my Repository Register App and this is the branch Main and this is the credential ID github which
we have defined on the Jenkins dashboard and the next stage we will add
which would be build application build application with the command mvn clean package and I will create the next stage which will actually test our application with this command mvn test I will save this file I will go to my Jenkins dashboard new item I will give the job name
register-app-ci, pipeline, okay I will click on discard old bill under the log rotation max of builds to keep, I will type here 2. I will not set any build trigger as of now under pipeline I will select
pipeline script from SCM and I will give my repository name, repository url SCM git and I will give the my GitHub repository credentials I will select the GitHub credentials branch main script path Jenkins file apply and Save I will now go ahead and click on build now okay so job completed next task is to set up the SonarQube so on the AWS console I will go to launch instances I will give the name SonarQube Ubuntu and instance type I will select t3 medium t2 micro is in insufficient because we will be
installing postgresql and SonarQube in this VM I will select my key pair disk I will select 15 GB launch instance I will copy the public IP of the virtual machine
and I will access it from my local system first of all I will update the package Repository I will install the postgresql postgresql has been installed I will enable it now I will create the database for the SonarQube I will set the password you have to remember this password Okay so database for the
SonarQube has been created I will now go ahead and add the adaptium repository I will now go ahead and install the Java so this is the version of the
Java which has been installed now I need to do some Linux kernel tuning
so first of all I will increase the limits I will open this file and at the end of the file I will add these two lines now I will increase the mapped memory
regions, so I will open this file and I will go to the end of this file and I will add this line I will save and close this file okay now I will go ahead and reboot my system system is rebooting meanwhile I will go to the
virtual machine on the AWS console and I will go to security groups edit inbound rule, add rule and
I will allow the port 9000. because we will be accessing the
SonarQube over the port 9000. okay reboot completed I
will reconnect to my server and from here we will actually start the
SonarQube installation so first of all I will download the packages I will install the unzip in my system I will now create the user and
set the permission for that user I will now update the SonarQube
properties with the database credentials so I will open one file and in this file here sonar jdbc username I will uncomment and give the username as sonar and I will give the password which we have set and here sonar jdbc url I will provide I will save and close this file I will now go ahead and create
the service for the SonarQube so I will open this file and I will give the entries in this file I will save and close this file I will now start the SonarQube
and I will enable the service so SonarQube service is running in my system and we can watch the log file and
monitor the startup with this command I will copy the public IP of the SonarQube
server and I will access it on the browser with port 9000. so username is admin password is also admin you will have to set the new password so I will give the old password which is
the admin and I will set the new password so here we have set up our
SonarQube server next step is to integrate the SonarQube with the Jenkins so on the SonarQube home page I will go to my account security under the generate tokens I will give the name to the token, Jenkins SonarQube token, type I will select global analysis token expire in, no expiration and I will click on generate copy this token to your local system now using this token I will create
the credentials under the Jenkins so on the Jenkins dashboard I will go to manage Jenkins credentials add new credentials kind I will select secret text and here I will paste our token
which we have created just now and ID I will give Jenkins SonarQube token I will click on create Okay so token has been created in the Jenkins now I will install and configure the few plugins
on the Jenkins, so I will go to manage Jenkins plugins, available plugin, and I will search here sonar so I will select this one sonar qube scanner
and sonar quality gates and the quality gates I will click on install and here I will tick restart Jenkins when installation is completed so you can see here quality gates plugin and
sonar quality gates plugin has been installed and is scanner also installed in my system, you
can ignore this warning because in the previous step we have given the database credentials
in the plain text so it is giving the warning if you want to ignore this warning just go to configure which of these warnings are shown and here under the security warning untick these warnings, apply and Save I will now go ahead and add the sonar SonarQube
to my Jenkins, I will go to manage Jenkins, system and here I will click on add SonarQube, name I will
give SonarQube server and the url I will provide private IP address of the SonarQube server colon 9000. server authentication token I will select this Jenkins SonarQube token which
we had created using the SonarQube API token apply and save I will now go ahead and add the
SonarQube scanner in my Jenkins so I will go to manage Jenkins, tools and under the SonarQube scanner installations I will click here on add SonarQube scanner,
name I will provide SonarQube scanner install automatically apply and Save now I need to add the stage for the
SonarQube analysis in my pipeline script so on my GitHub repository I
will go to edit the Jenkinsfile and after the test application stage I will add one more stage name of this stage is SonarQube analysis so this is the credential ID which we have
given in the Jenkins, Jenkins SonarQube token I will save this file I will go to Jenkins job and I will click on build now Okay so build successful and the new stage has been added
to our pipeline which is the SonarQube analysis if I go to SonarQube dashboard under the
projects you can see this is my build I need to now create the SonarQube webhook without his webhook your pipeline will fail,
so on the SonarQube dashboard I will go to Administration and under the configuration I
will go to drop down and I will select webhooks so as of now there is no webhook on my SonarQube dashboard, I will click here on create I will give the name to the webhook, SonarQube webhook and I will provide the URL this is the IP address of the Jenkins server I will click on create I will now go ahead and create the one
more stage under my pipeline script for the quality gate, so I will go to my repository I will open the Jenkinsfile I will edit it and I will add one more stage and the name of the stage is quality gate this is the step and this is the credentials which we had
defined for the SonarQube in the Jenkins I will correct the indentation I will save the file and I will again go back to my job on the
Jenkins and I will click here on build now so the job completed successfully and the one more stage for the quality gate
has been added to our pipeline I will now go ahead and install
the docker related plugins in my Jenkins so on the Jenkins dashboard
I will go to manage Jenkins, plugins available plugins and I will search here docker so I will select this plugin docker Docker commons, Docker pipeline, Docker API Docker build step and Cloud base Docker build and push
so total six plugins I have selected I will click on install and I will tick here
restart Jenkins when installation completed I will now add the Docker Hub credentials
in my Jenkins, so I will go to manage Jenkins credentials add credentials username with password username I will provide my username of the docker hub password I will provide the access token you can go to account setting on the docker hub security and you can create here the access token ID I will give here Docker hub create I need to now define the variables in my pipeline script so on my GitHub repository I will
open the Jenkins file I will go to edit and here I will add the environment variables so these are the environment variables which I will add here so this would be my application name
register-app-pipeline and this will be my release and this is my Docker Hub username and these are the credentials which we
have just created for the docker hub I will close the bracket I will go ahead and add the one more
stage for the build and push Docker image and this stage will actually build the docker
image and it will push it to the docker hub so name would be build and push Docker image I will commit these changes to the file and now if I go to so this is my application name or
image name, so if I go to my Docker hub there is no image present with
this name on my Docker Hub account I will go to Jenkins dashboard, I will go to my job and I will click on build now okay so job completed if I go to
Docker Hub and do the refresh here so you can see the image has been
pushed here a few seconds ago I will now go ahead and add two more
stages on my Jenkins pipeline script the first stage would be Trivy
scan which will actually scan our Docker Hub image so or on the GitHub
repository I will edit the Jenkins file and I will add the stage so the stage name is trivy scan it will scan the latest image on the
docker Hub with the name register-app-pipeline this is my username of the docker hub and I will add the one more stage with the name
cleanup artifacts which will actually clean the created artifacts from the workspace so stage name is cleanup artifact it will actually clean the previously created Docker image I will save the Jenkins file next step is to create the eks bootstrap server so on the AWS console, I will go to launch instances I will give the name eks bootstrap server Ubuntu t2 micro I will select my key pair launch I will copy the public IP address and
I will access it from my local system I will first do the system update I will open the hostname file and I will change the host name of
this machine to eks bootstrap server I will go ahead and reboot my system reboot completed I will reconnect I will now go ahead and install the AWS CLI in this server so I will give the command to download the awsli I will install the unzip with this command I will unzip the downloaded AWS CLI package I will run it so this is the AWS cli
version installed in my system I need to now download the I
need to now install the kubectl in this Server, so first of all I will
download the kubectl with this command so kubectl is not having the executable permission, I will give it with this command now the kubectl is having executable permission I will move the kubectl to /bin because all
the executable files are present in the /bin so this is the version of the kubectl which is installed in my server you can ignore this warning
because we are not connected to any kubernetes cluster I need to now install the eksctl in this server so I will download the package in
the temp folder with this command I will go to tmp folder and if I do
the ll, so eksctl is already having the executable permissions here so I will move the eksctl file from the /tmp to /bin with this command because all the
executable files are present under the /bin if I give the command eksctl version so this is the version of the eksctl
which has been installed in my server I have to now create the IAM
role which we will assign to eks bootstrap server so on the AWS console I will go to IAM roles create role AWS service ec2 next I will give the administrator access next I will give the name to the
role eksctl_score role create role okay so role has been created I will go to ec2 instance of the bootstrap server actions, security, modify IAM role and here in the drop down I will select
the role which we have just created update IAM role I will now go ahead and create the EKS
cluster for that I will go to terminal of the bootstrap server and I will give here the command to create the eks cluster this
would be the name of my cluster I will give the region in which
I want to create my cluster I will give the node type which is t2 small I will give the node count which is 3 in my case this EKS cluster creation will take some time I will pause the recording here and
I will resume once it is completed EKS cluster creation completed if I give the command kubectl get nodes so these are three nodes in my cluster next task is ArgoCD installation and
configuration so first of all on the bootstrap server I will create the namespace for the Argo CD with this
command kubectl create namespace argocd okay so namespace for the ArgoCD has been created, let's apply the yaml configuration
files to ArgoCD, I will give the command for that now we can view the Pods
created in the ArgoCD namespace so I will give the command kubectl get pods namespace argocd so these are the pods running inside the ArgoCD namespace to interact with the API server we
need to deploy the ArgoCD CLI so I will give the command to deploy the ArgoCD CLI I will give the executable permission now we need to expose the ArgoCD server to
the external World by creating the load balancer so we will do the same with this command so it is creating the load balancer in the
background which may take three to five minutes if I give the command kubectl get service namespace argocd so this is the load balancer created for the ArgoCD we, can access the ArgoCD cluster with this URL but before that we need to extract
the password for the ArgoCD so I will give the command to get the password now we need to decode it so I will decoded
with the command Echo and the password base64 --decode so this is the decoded password I will copy the DNS name for the load balancer created for
the ArgoCD cluster I will go to browser and I will browse it I will give the username and I will give the password which we have decoded okay so we have signed into our ArgoCD cluster, I will go to user info update password, I will give the current
password, I will set the new password I will confirm the password save new password I will do the log out
and I will login with the new password next task is to add our EKS cluster
to the ArgoCD, for that first of all we will have to login to ArgoCD from the CLI
so I will give the command ArgoCD login and I will provide the URL of the ArgoCD cluster ArgoCD login and the name URL of the ArgoCD cluster hyphen hyphen username admin so this is my complete command I will hit enter I will provide the password which we have
set for the ArgoCD cluster on the browser okay so login successfully we have successfully logged into
the ArgoCD cluster over the CLI if I go to ArgoCD dashboard, settings cluster
so under the ArgoCD we have only one cluster as of now which is the default cluster of the ArgoCD and if I give the command ArgoCD cluster list so it is the same cluster which I have shown you in the browser ArgoCD cluster there is no other cluster added to ArgoCD now this is the default cluster of the ArgoCD now I need to extract the name of my EKS cluster to give the command to add my EKS cluster to the ArgoCD so if I give this command
Cubectl config get context it will show the details of my EKS cluster
so this is my EKS cluster I will now give the command to add my EKS cluster to the ArgoCD so I will start the command argocd cluster add and the name of my EKS cluster I will copy from here and provide it here --name I will give the name to my EKS cluster which is easily identifiable under the ArgoCD so this is the name I am giving to my eks cluster under the ArgoCD virtualtechbox hyphen eks hyphencluster I will hit the enter here yes it actually creates the role binding if I give the command now argocd cluster list so now I can see both the cluster
this is the default cluster of the Argo CD and this is my EKS cluster which I have added to ArgoCD just now
if I go to dashboard and do the refresh here so you can see here both the cluster are available default cluster of the ArgoCD and my EKS cluster added to ArgoCD this is my another repository on the GitHub which
is having the Manifest file for the kubernetes I need to now connect this repository to my ArgoCD cluster so I will go to ArgoCD dashboard and under the settings I will go to repositories, connect repo via https type git, project default I will give the Repository URL I will give here my username for the GitHub and under the password I will give my personal
access token for the GitHub and I will click on connect so repository has been added to the ArgoCD dashboard so I have to now deploy the resources and application on my EKS cluster through the ArgoCD so one thing should be noted here in my Repository if I go to deployment yaml file the name and the
version number of the image should match to my image and version number of the Docker Hub image so on the ArgoCD dashboard, I will go to
new app, I will give the name Register App project name I will select default
sync policy I will select automatic I will tick these two options prone resources and selfheal and the repository I will select my GitHub
repository which I had added in the previous step and this repository contains the manifest file
for the kubernetes, path I will select dot slash destination I will select my EKS cluster in the drop down namespace I will select default it will deploy the resources on my eks cluster
in the default namespace, I will click on create so cluster sorry the application
has been created on my EKS cluster on the terminal of the bootstrap server if I give the command kubectl get pods so these are the pods running in the default name-space of my EKS cluster and to the to get the external DNS name for my
application I will give the command kubectl get svc which will show the service details of the
service created in the default namespace so this is the external DNS name of the load balancer created for this application through the service
manifest file, so I will copy this DNS name and I will browse it on the new tab with the port 8080
because my container is running on the port 8080. so this is the default home page of the
Tomcat and if I give the slash web app so this is my application deployment is happening perfectly on the EKS cluster through the ArgoCD now we need to automate this deployment process so I will go to Jenkins dashboard
and I will create the CD job now I will give the name to the CD job, pipeline, okay discard old build max of build to keep, I will give two and I will tick here this project is parameterized and I will click on add parameter and I will select this string parameter name I will give image tag because every time our CD job will change the image tag on the deployment manifest file on the GitHub repository and then I will tick here on trigger builds remotely and I will give the authentication token name git ops hyphen token and pipeline definition
I will select pipeline script from SCM and the SCM I will select Git
I will give the Repository gitps repository on my GitHub which is
having the manifest file for the kubernetes credentials I will select GitHub credentials Branch I will select here Main and then apply and Save now I will go to my application repository on the GitHub and I will open the Jenkins file and actually I need to add one more stage on my Jenkins file and the stage name would be trigger CD pipeline and this stage will actually trigger the CD pipeline and this would be the last stage of our pipeline script so I will go to edit and here I will add one more stage stage name is trigger CD pipeline and in this command this is the parameter which we have given in the previous step and this is actually the DNS name of my Jenkins server so this name DNS name for our Jenkins Master node and this is the CD Job which we have just created and this is the token which we have
just provided in the Jenkins job I will correct the indentation I will save this file in my jenkins file on the last stage we have recalled this Jenkins API token, so we need to create this token
and we need to define it as the variable in the pipeline script and in this stage Cloud user
this is my username on the Jenkins so I will go to Jenkins dashboard and
under my username I will go to configure and under API token I will click on
add new token, I will give the name Jenkins API token and I will click on generate and this is the token generated and note one
thing here if I click on this button copy token so message is coming copy only supported
with a secure https connection and we are not using the https we are using the HTTP so
this button will not work, so I will copy the plain text and I will save it in
my local system because it will not appear later I will go to Jenkins dashboard
I will go to manage Jenkins credentials add credentials kind I will select secret text and here I will provide the Secret sometimes here copy doesn't work
so I will type my secret here ID I will give Jenkins API token I will give
the description and I will click on create Okay so API token has been added, now I will go
to my GitHub repository because I have to define this API token as the variable
in my pipeline script so I will go to my GitHub repository I will open the Jenkins file I will edit it and I will provide here one more variable Jenkins API token I will save it next task is to create the Jenkins file in our git ops repository because our CD job
has been configured with that repository and that repository is not having the Jenkins
file and our CD job has been configured as the declarative job which will pull the jenkins file
from the GitHub repository so I will go to my git ops repository which has the manifest file for the kubernetes I will create the new file in this Repository I have given the name Jenkins file I will define my agent so this is my Jenkins agent name, Jenkins agent then I will define the variables so I'm giving the one environment variable which is the app name and our app name is register app pipeline so we have defined the agent
and we have defined the variable, now I will go ahead and create the stages okay so I will create my first stage which will be cleanup workspace,
which will clean the workspace with this command and then I will add another stage checkout from SCM so it will use the credential ID GitHub
defined in the Jenkins and this is my git Ops Repository and the branch is Main so we have defined the two stages
now I will Define my another stage which will actually update the deployment tags but locally and this is my deployment manifest file present in this Repository once it it has changed the it has updated
the tags in the deployment manifest file it will push that changes to the GitHub repository which would be done in the next stage push the changed deployment file to Git so in this stage this is my username
of the GitHub, this is my email ID and it will push the locally changed deployment
dot yaml file to the remote Repository it will use the credentials defined
in the Jenkins, the name is GitHub this is my remote Repository and this
is the branch so it will push the changed file with this command to the
remote Repository to the main branch I will save this file everything has been set up now it's time to
verify our CI CD pipeline, before I verify my cicd pipeline I will set the trigger in
my CI job, so I will go to my Jenkins CI job configure under the build trigger I will click
here, poll SCM, I will provide the schedule which is actually every minute
it will monitor this Repository every minute and if there is any
change on this Repository it will trigger the build job apply, save I have opened the CI job and
CD job on two different tabs and I am connected to my remote Repository from my local system using Git Bash and in my Repository I'm inside this folder so I will open the index.jsp file and here I will add new line so I have added a new line
which says happy learning I will save this file I will now push these changes to remote Repository okay so changes has been pushed and my Jenkins CI job has been triggered automatically note one thing here this is our build number eight so CI job completed if I go to
CD job so it has also triggered automatically upon the completion of CI job so CD job completed successfully and our build number was 8 if I go to Docker hub and do the refresh here so image has been pushed just now and if I go to image image is having the latest tag
with the latest build number which is 8. if I go to my git ops repository and do the refresh here and open the deployment.yaml file so in this file my image is having the latest tag which is the eight and if I go to Argo CD and do the refresh here and go to app app detail so app is using the latest release which is the eight and if I go to pod pod is also using the latest release and if I go to my application and do the refresh here so you can see here changes applied to our application also we will test it once again
I will go to the Repository I will again open the index.jsp file and this time I will add here see you again I will save this file I will push the changes to remote Repository if I go to CI job it has triggered automatically
upon the push on the GitHub repository CI job completed successfully if I go to CD job it has automatically triggered
upon the completion of CI job CD Job also completed successfully and note the build number in our CI job
and the build number is 9. if I go to Docker hub and do the refresh here so image
has been pushed just now if I go to image image is having the latest build number which is the nine if I go to ArgoCD dashboard
and do the refresh here and go to app app details so app is using the latest release which is the nine and if I go to pod, it is also using the latest release and if I go to my application
and do the refresh here so changes has been applied to my application also by this way you can set up declarative CI CD pipeline using Jenkins Docker ArgoCD and the EKS any change on the GitHub repository will trigger the CI job on the Jenkins
and once CI job is completed CD job will be triggered automatically
and upon the completion of the CD job we will have the changes applied onto our application hope you find this video helpful you can fork my Repository create your own branch and practice the complete project during the practice if you face any kind of difficulty you can ask me in the comment section
I will definitely reply to your query follow me on the LinkedIn, I post multiple
useful things frequently on the LinkedIn also if you find this project helpful then like the video a lot of effort went behind this video
so do subscribe to my channel to encourage my work share this video with the friends and spread the knowledge I look forward you to join me in the next video thank you