Skip to content

Backend Pipeline

Backend Pipeline #203

name: Backend Pipeline
# Workflow triggers
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Schedule pipeline to run monday midnight after sunday ends
schedule:
- cron: 0 0 * * MON
# Enable manual runs of workflow
workflow_dispatch:
# Workflow stages
jobs:
# Perform Lint Checks
lint:
name: Lint Checks
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./backend
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install pnpm
run: npm install -g pnpm
- name: Install Dependencies
run: pnpm install
- name: Run lint script
run: pnpm run lint
# Run Unit Tests
test:
name: Unit Tests
needs: lint
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./backend
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Install pnpm
run: npm install -g pnpm
- name: Install dependencies
run: pnpm install
- name: Run unit tests with jest
run: pnpm run test
# Build Application
build:
name: Build Application
needs: test
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./backend
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: Install pnpm
run: npm install -g pnpm
- name: Install Dependencies
run: pnpm install
- name: Compile TypeScript into JavaScript
run: pnpm run build
# Deploy Application on push and schedule
deploy:
name: Deploy Application
needs: build
if: github.event_name == 'schedule' || github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: echo "No deployments yet. Skipping."
# Notify After Deployment on push and schedule
notify:
name: Send Notifications
if: github.event_name == 'schedule' || github.event_name == 'push'
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Send Notification
run: echo "No notifications yet. Skipping."