name: Production CI/CD Pipeline on: push: branches: - main jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Build run: npm run build - name: Upload Build Artifact uses: actions/upload-artifact@v3 with: name: dist path: dist/ deploy-prod: needs: build-and-test runs-on: ubuntu-latest environment: name: production steps: - name: Download Build Artifact uses: actions/download-artifact@v3 with: name: dist path: dist - name: Deploy to Production via FTP env: FTP_USERNAME: ${{ secrets.FTP_USERNAME }} FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }} FTP_HOST: ${{ secrets.FTP_HOST }} run: | lftp -d -u "$FTP_USERNAME","$FTP_PASSWORD" -e "set ssl:verify-certificate no; set ftp:ssl-allow yes; set ftp:ssl-force true; set ftp:ssl-protect-data true; set ftp:passive-mode true; mirror -R dist/ ./; quit" $FTP_HOST