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.
 
 
              


 
    
Top comments (0)