Introduction
In this article, we are going to cover a Jenkins CI/CD pipeline to build and deploy a reactjs app from github to amazon s3.
Jenkins is an open-source automation server that is widely used for building, testing, and deploying software projects. It provides a platform for implementing Continuous Integration (CI) and Continuous Deployment (CD) pipelines, allowing developers to automate various stages of the software development lifecycle.
If you would like to follow a video tutorial please use our YouTube video.
Prerequisites
GitHub Account: Ensure you have a GitHub account and a repository where your reactjs project is hosted.
AWS Account: An active AWS account with permissions to create and manage S3 buckets.
AWS S3 Bucket: Create an S3 bucket in your AWS account where you will deploy your project.
Jenkins Server: Install Jenkins on an EC2 instance or server.
Create IAM user
Go to IAM services, create a user with “EC2fullacess” and “S3fullaccess” permission. and download the access key and secret key

Setup S3 bucket
Go to S3 services, click >> create bucket, type >> bucket name

Unselect the >> block all access, select >> acknowledgement, click >> create bucket

Now we successfully created the bucket, click >> properties

Scroll down to see the static web hosting, click >> edit

Click >> enable, In index document type >> “index.html“, click >> save changes

Now click >> permissions

In bucket policy, click >> edit

Now click >> policy generator

In step 1 – select a type of policy, choose >> s3 bucket policy
In step2 – principle, type >> ” * “ , in AWS service, choose >> amazon S3, In actions,choose >>”GetObject“.

In ARN go back to the previous page and copy the >> bucket ARN

Paste the bucket ARN here and click >> add statement.

Click >> generate policy, copy the policy

Go back to the previous page and paste the copied policy, add “/*” in the 11th line and click >> save changes

Now we set all the things in the s3 bucket
Jenkins server
This is my Jenkins server, I already installed Jenkins, open the Jenkins server.

Click >> Create a job, add >> name,choose >> pipeline, click >> ok.
Select >> Github project, paste the GitHub project repository URL

In build triggers, select >> github hook trigger

In definition, choose >> pipeline script for SCM, In SCM choose >> git

Add the github project repository url again, In credentials, click >> add , choose >> Jenkins

Choose >> AWS credentials (if it is not shown go to Jenkins main page, click manage jenkins, click plugin, and install AWS credentials plugin)

Add access key and secret key of the user that we created in the first step, and click >> add

Click >> apply and save

Now we successfully created a job, go to Jenkins main page, click >> manage Jenkins, and click >> credentials, here it will assign a credential id for the aws credentials, copy the credential id

Setup Github
Go to github,add the credential id in the jenkins file

To reference my Jenkins file, please consult the file “jenkinsfile” located in the root directory of this repository: https://github.com/easydeploy-cloud/jenkins-cicd-reactjs
Now add S3 bucket name in the jenkinsfile

Now go to Jenkins server copy the public ip

Go to github repository settings, click >> webhooks, click >> add webhook

Now paste the jenkins ip here and type “/github-webhook” and click >> save

Jenkins job
Go to Jenkins dashboard, click >> your job

Click >> build now

Now our project is successfully buildt and deployed in s3

Web hosting
Go to S3 service, choose your bucket, click >> properties, scroll down, and copy the static web hosting url

paste it in the new tab

Now our React JS project is successfully built and hosted in the S3 web hosting
Now I am going to change some content to check if the auto trigger is working properly or not

Go to GitHub project repository,i am changing some words on the main page(app.js), click >> commit changes.

The auto trigger is working properly, it successfully built the job and hosted it in the s3

Go to the react js page, click >> refresh button. Now the content has changed

setting up a Jenkins CI/CD pipeline to build and deploy a ReactJS app from GitHub to Amazon S3 involves:
Configuring Jenkins with GitHub and AWS credentials.
Creating a Jenkins job to pull code from GitHub.
Building the ReactJS app.
Deploying the built files to an S3 bucket.
This automated process ensures efficient, reliable, and consistent deployment of your application, allowing your team to focus on development rather than manual deployments.








