Skip to content

BE_20

BE_20 #172

Workflow file for this run

name: Deploy Next.js App
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-22.04
strategy:
matrix:
node-version: [20]
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 10
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "pnpm"
- name: Install Deps
run: pnpm install
- name: Generate Prisma Client
run: pnpm db:generate
# CI
- name: Check Types
run: pnpm typecheck
- name: Lint Code
run: pnpm lint
- name: Try Build
run: pnpm build
- name: Run Internal Tests
run: pnpm test
# CD
- name: Create .env file
run: echo "SITE_URL=${{ env.SITE_URL }}" >> .env
- name: Build Docker Image
run: docker build -t jadendocks/ask_easy .
- name: Login to Docker Hub
run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
- name: Publish Docker Image to Docker Hub
run: docker push jadendocks/ask_easy:latest
deploy:
needs: build
runs-on: self-hosted
steps:
- name: Clean up Docker to free disk space
run: docker system prune -af --volumes
- name: Pull Image from Docker Hub
run: docker pull jadendocks/ask_easy:latest
- name: Stop and Remove Existing Container
run: docker rm -f ask_easy
- name: Run Docker Container
run: docker run -d -p 3000:3000 --name ask_easy jadendocks/ask_easy:latest