Skip to content

ci: add GitHub Actions workflow for CI/CD pipeline #7

ci: add GitHub Actions workflow for CI/CD pipeline

ci: add GitHub Actions workflow for CI/CD pipeline #7

Workflow file for this run

name: CI/CD Pipeline
on:
pull_request:
branches:
- main
jobs:
lint-and-build:
name: Lint and Build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Node.js (Use Required Version)
uses: actions/setup-node@v4
with:
node-version: 20.18.0 # Set to the required version
- name: Install dependencies
run: npm install
- name: Set up environment variables
run: |
echo "NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }}" >> .env
echo "NEXTAUTH_URL=${{ secrets.NEXTAUTH_URL }}" >> .env
echo "NEXT_PUBLIC_APP_URL=${{ secrets.NEXT_PUBLIC_APP_URL }}" >> .env
echo "RESEND_API_KEY=${{ secrets.RESEND_API_KEY }}" >> .env
echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" >> .env
echo "DATABASE_URL_UNPOOLED=${{ secrets.DATABASE_URL_UNPOOLED }}" >> .env
echo "PGHOST=${{ secrets.PGHOST }}" >> .env
echo "PGHOST_UNPOOLED=${{ secrets.PGHOST_UNPOOLED }}" >> .env
echo "PGUSER=${{ secrets.PGUSER }}" >> .env
echo "PGDATABASE=${{ secrets.PGDATABASE }}" >> .env
echo "PGPASSWORD=${{ secrets.PGPASSWORD }}" >> .env
echo "POSTGRES_URL=${{ secrets.POSTGRES_URL }}" >> .env
echo "POSTGRES_URL_NON_POOLING=${{ secrets.POSTGRES_URL_NON_POOLING }}" >> .env
echo "POSTGRES_USER=${{ secrets.POSTGRES_USER }}" >> .env
echo "POSTGRES_HOST=${{ secrets.POSTGRES_HOST }}" >> .env
echo "POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }}" >> .env
echo "POSTGRES_DATABASE=${{ secrets.POSTGRES_DATABASE }}" >> .env
echo "POSTGRES_URL_NO_SSL=${{ secrets.POSTGRES_URL_NO_SSL }}" >> .env
echo "POSTGRES_PRISMA_URL=${{ secrets.POSTGRES_PRISMA_URL }}" >> .env
echo "GOOGLE_CLIENT_ID=${{ secrets.GOOGLE_CLIENT_ID }}" >> .env
echo "GOOGLE_CLIENT_SECRET=${{ secrets.GOOGLE_CLIENT_SECRET }}" >> .env
echo "GITHUB_ID=${{ secrets.GH_ID }}" >> .env
echo "GITHUB_SECRET=${{ secrets.GH_SECRET }}" >> .env
- name: Debug File Listing
run: |
echo "Checking for matching files..."
find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.json" -o -name "*.md" -o -name "*.css" -o -name "*.scss" \) \
! -path "./node_modules/*" ! -path "./dist/*" ! -path "./.git/*" ! -path "./coverage/*" \
|| echo "No matching files found."
- name: Run Biome Formatter & Linter
run: |
FILES=$(find . -type f \( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" -o -name "*.json" -o -name "*.md" -o -name "*.css" -o -name "*.scss" \) \
! -path "./node_modules/*" ! -path "./dist/*" ! -path "./.git/*" ! -path "./coverage/*")
if [ -n "$FILES" ]; then
echo "Running Biome on found files..."
echo "$FILES" | xargs npx biome format --write
echo "$FILES" | xargs npx biome lint --write
else
echo "No files found to format or lint. Skipping."
fi
- name: Run Build
run: npm run build