Anlisha Maharjan
Posted on January 2, 2023
Let’s see the process to deploy React app on shared hosting with FTP Deploy GitHub Action.
Prerequisites:
Set up an FTP account in cPanel.
Setup React Project in GitHub.
Let’s start!
Setup GitHub Actions:
Option 1:
Run the command below in the root of the project directory. A ci.yml file is created inside the workflows folder, the file can have any name but it should end with a .yml extension. Write the configuration code snippet below into the ci.yml file.
mkdir .github/
mkdir .github/workflows/
touch .github/workflows/ci.yml
Option 2:
In the GitHub repository, click on Actions > set up a workflow yourself and write the configuration code snippet below into the ci.yml file. The file can have any name but it should end with a .yml extension.
Let me explain what each section does.
name: Deploy on push master
Just specifying a name for the workflow.
on:
push:
branches:
- master
The above snippet triggers the workflow when one pushes to the master branch.
jobs:
web-deploy:
name: Deploy
runs-on: ubuntu-latest
jobs – Group together all the jobs that run in the workflow. Specifying and setting up a web-deploy job.
runs-on: ubuntu-latest – Configures to run the workflow using the latest version of Ubuntu.
strategy:
matrix:
node-version: [16.x]
The matrix accompanied by the node-version tells the workflow to run web-deploy on the specified node version.
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v2
steps – Group together all the steps that run in the web-deploy job.
uses: actions/checkout@v2 – Check-out repository so the workflow can access it.
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@master
with:
node-version: ${{ matrix.node-version }}
uses: actions/setup-node@master – Installs the specified node version(16) in the CI environment.
- name: Copy .env.prod.example to .env
run: cp .env.prod.example .env
run: cp .env.prod.example .env – Creates a .env with required environment variables. (Important because .env is always added to .gitignore).
- name: 🔨 Build Project
run: |
npm install
npm run build
run: npm install – Using npm to install the package node dependencies.
run: npm run build – Builds React project.
- name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@4.3.3
with:
server: ${{ secrets.SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: build/
Transfers files from the build folder to the shared hosting server using FTP credentials.
Add GitHub Secrets:
Goto Settings tab on the GitHub repository, click on Secrets > Actions > New Repository Secret to add the FTP server, account username, and password.
For example, for FTP username: FTP_USERNAME as Name and zon@zon.com as Value.
To access variables in the pipeline use the format below:
${{ secrets.SERVER }}
${{ secrets.FTP_USERNAME }}
${{ secrets.FTP_PASSWORD }}
Now anytime one pushes to the master branch, the pipeline starts running web-deploy job which builds and deploys the react app.
Goto Actions tab to monitor whether it’s running, successfully deployed, or failed.
This concludes a CI/CD pipeline on GitHub. Thanks for reading!
The post Deploy React with GitHub Actions on Shared Hosting first appeared on Anlisha Maharjan.
Posted on January 2, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.