Add manual trigger option alongside automatic deployment for GitHub P… #1
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: Continuous Integration and Deployment | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
jobs: | |
# Combined CI and CD Jobs to reduce redundancy | |
build-and-deploy: | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout code just once | |
- uses: actions/checkout@v3 | |
# Setup Node.js only once | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: 'npm' | |
# Install dependencies only once | |
- name: Install Dependencies | |
run: npm ci | |
# Lint, Test, Build, and Generate Documentation | |
- name: Lint | |
run: npm run lint | |
- name: Test | |
run: npm run test | |
- name: Build | |
run: npm run build | |
- name: Generate Documentation | |
run: npm run docs:code | |
env: | |
NODE_OPTIONS: --max-old-space-size=4096 | |
NO_COLOR: true | |
# Conditional Deployment steps | |
- name: Setup Pages | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
uses: actions/configure-pages@v3 | |
- name: Build with VitePress | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
run: npm run docs:deploy-github-pages | |
- name: Upload artifact | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: docs/.vitepress/dist | |
- name: Deploy to GitHub Pages | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
uses: actions/deploy-pages@v2 |