test #215
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: 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." |