Adding smoke test #90
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 Workflow for our Class | |
on: | |
push: | |
branches: olt | |
jobs: | |
build: | |
name: Build Frontend Artifact | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Ensure Node Version | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16.x | |
- name: Cache Node Modules | |
uses: actions/cache@v4 | |
with: | |
path: frontend/node_modules | |
key: fe-node-${{ hashFiles('frontend/package-lock.json') }} | |
- name: Install deps | |
run: cd frontend && npm i | |
- name: Compile code | |
run: cd frontend && npm run build | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: frontend/build | |
security-audit: | |
name: Audit Deps | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout code | |
uses: actions/checkout@v4 | |
- name: ensure node installed and right version | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16.x | |
- name: audit | |
run: cd frontend && npm audit --omit=dev | |
lint: | |
name: 🧼 Ensure Code Style | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node 16 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16.x | |
- name: Cache Node Modules | |
uses: actions/cache@v4 | |
with: | |
path: frontend/node_modules | |
key: fe-node-${{ hashFiles('frontend/package-lock.json') }} | |
- name: Install deps | |
run: cd frontend && npm i | |
- name: 😂 Lint code | |
run: cd frontend && npm run lint | |
test: | |
name: 🧪 Run Unit Tests | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node 16 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16.x | |
- name: Cache Node Modules | |
uses: actions/cache@v4 | |
with: | |
path: frontend/node_modules | |
key: fe-node-${{ hashFiles('frontend/package-lock.json') }} | |
- name: Install deps | |
run: cd frontend && npm i | |
- name: Run the unit tests | |
run: cd frontend && npm run test-ci | |
static-analysis: | |
name: 🔬 Run Static Code Analysis | |
needs: [build] | |
runs-on: ubuntu-latest | |
permissions: | |
security-events: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v2 | |
with: | |
config-file: ./.github/codeql/codeql.config.yml | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16.x | |
- name: Cache Node Modules | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: frontend/node_modules | |
key: fe-node-${{ hashFiles('frontend/package-lock.json') }} | |
- name: Install Deps | |
run: cd frontend && npm i | |
- name: Build | |
run: cd frontend && npm run build | |
# - name: Perform Analysis | |
# uses: github/codeql-action/analyze@v2 | |
deploy: | |
name: 🚚 Deploy Frontend Artifact | |
runs-on: ubuntu-latest | |
needs: | |
- security-audit | |
- lint | |
- test | |
- static-analysis | |
if: github.ref == 'refs/heads/olt' | |
outputs: | |
my_url: steps.deployment.outputs.page_url | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
verify: | |
name: 🧪 Verify Successful Deployment | |
needs: | |
- deploy | |
runs-on: ubuntu-latest | |
if: success() | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Run Frontend Smoke Test | |
run: | | |
export TEST_URL=${{ needs.deploy.outputs.my_url }} | |
cd frontend/e2e | |
npm i | |
npm run smoke |