Merge pull request #6 from rotirk20/development #47
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- main # Trigger deployment only on push to the main branch | |
pull_request: | |
branches: | |
- main # Run checks (build only) on PRs | |
jobs: | |
# --- Build Frontend --- | |
build-frontend: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Node.js for frontend | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '20' # Specify the Node.js version | |
- name: Install frontend dependencies | |
working-directory: ./frontend # Navigate to the frontend folder | |
run: npm install | |
- name: Build frontend | |
working-directory: ./frontend | |
run: npm run build | |
- name: Upload frontend artifact | |
if: github.event_name == 'pull_request' # Only upload the artifact on PRs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: angular-build | |
path: ./frontend/dist/smetovi/ # Path to Angular build files | |
# --- Build Backend --- | |
build-backend: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Node.js for backend | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '20' # Specify the Node.js version | |
- name: Install backend dependencies | |
working-directory: ./backend # Navigate to the backend folder | |
run: npm install | |
- name: Upload backend artifact | |
if: github.event_name == 'pull_request' # Only upload the artifact on PRs | |
uses: actions/upload-artifact@v4 | |
with: | |
name: backend-artifact | |
path: ./backend # Upload the backend folder for deployment | |
# --- Deploy Frontend --- | |
deploy-frontend: | |
runs-on: ubuntu-latest | |
needs: [build-frontend, build-backend] # Ensure both build jobs complete before deployment | |
if: github.ref == 'refs/heads/main' # Only deploy when merged into main branch | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Download frontend artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: angular-build | |
path: ./frontend/dist/smetovi/ # Ensure this is your Angular build folder | |
- name: Deploy frontend to cPanel via FTP | |
uses: SamKirkland/[email protected] | |
with: | |
server: ${{ secrets.FTP_SERVER }} | |
username: ${{ secrets.FTP_USERNAME }} | |
password: ${{ secrets.FTP_PASSWORD }} | |
local-dir: ./frontend/dist/smetovi/ # Deploy the actual files | |
server-dir: /public_html/ # Upload to the existing public_html folder | |
port: ${{ secrets.FTP_PORT }} | |
log-level: verbose | |
force: true # This will re-upload all files, even unchanged ones | |
# --- Deploy Backend --- | |
deploy-backend: | |
runs-on: ubuntu-latest | |
needs: build-backend # Ensure the backend build completes before deployment | |
if: github.ref == 'refs/heads/main' # Only deploy when merged into main branch | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Download backend artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: backend-artifact | |
path: ./backend/ # Download the backend files | |
- name: Deploy backend to cPanel via FTP | |
uses: SamKirkland/[email protected] | |
with: | |
server: ${{ secrets.FTP_SERVER }} | |
username: ${{ secrets.FTP_USERNAME }} | |
password: ${{ secrets.FTP_PASSWORD }} | |
local-dir: ./backend/ # Path to your backend build | |
server-dir: /api/ # Deploy directly to /api/ folder | |
port: ${{ secrets.FTP_PORT }} | |
log-level: verbose | |
force: true # This will re-upload all files, even unchanged ones |