e921f17d2c
The unit-tests job was failing because it couldn't find the generated Prisma client. Added prisma generate step before running unit tests to ensure the client is available.
135 lines
3.6 KiB
YAML
135 lines
3.6 KiB
YAML
name: Pull Request
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
unit-tests:
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: oven/bun:alpine
|
|
options: --user root
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install dependencies
|
|
run: bun install
|
|
|
|
- name: Generate Prisma client
|
|
run: bun x prisma generate
|
|
env:
|
|
DATABASE_URL: postgresql://user:pass@localhost:5432/dummy
|
|
|
|
- name: Run unit tests
|
|
run: bun test src/__tests__/unit/ src/__tests__/*.test.tsx src/__tests__/auth-simple.test.ts
|
|
|
|
acceptance-tests:
|
|
runs-on: ubuntu-latest
|
|
needs: unit-tests
|
|
container:
|
|
image: mcr.microsoft.com/playwright:v1.58.0-jammy
|
|
options: --user root
|
|
env:
|
|
DATABASE_PROVIDER: sqlite
|
|
DATABASE_URL: file:./prisma/ci.db
|
|
BETTER_AUTH_SECRET: test-secret-key-for-ci-only
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Bun
|
|
uses: oven/setup-bun@v2
|
|
with:
|
|
bun-version: latest
|
|
|
|
- name: Install dependencies
|
|
run: bun install
|
|
|
|
- name: Generate Prisma client
|
|
run: bun x prisma generate
|
|
env:
|
|
DATABASE_URL: postgresql://user:pass@localhost:5432/dummy
|
|
|
|
- name: Setup SQLite database
|
|
run: |
|
|
# Create SQLite database file
|
|
mkdir -p prisma
|
|
bun x prisma migrate deploy
|
|
|
|
- name: Run acceptance tests
|
|
run: bun run test:acceptance
|
|
env:
|
|
DATABASE_PROVIDER: sqlite
|
|
DATABASE_URL: file:./prisma/ci.db
|
|
BETTER_AUTH_SECRET: test-secret-key-for-ci-only
|
|
HOME: /root
|
|
|
|
analyze-bump-type:
|
|
runs-on: ubuntu-latest
|
|
needs: acceptance-tests
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Analyze commits for bump type
|
|
id: bump_type
|
|
run: |
|
|
# Get the merge base and PR commits
|
|
git fetch origin main:main 2>/dev/null || true
|
|
MERGE_BASE=$(git merge-base HEAD main 2>/dev/null || echo "HEAD~1")
|
|
|
|
# Analyze commits in this PR
|
|
COMMITS=$(git log --oneline ${MERGE_BASE}..HEAD 2>/dev/null || git log --oneline -10)
|
|
|
|
echo "Commits in this PR:"
|
|
echo "$COMMITS"
|
|
echo ""
|
|
|
|
# Determine bump type
|
|
if echo "$COMMITS" | grep -qE "(BREAKING CHANGE|!:)"; then
|
|
BUMP="major"
|
|
REASON="Breaking change detected in commit messages"
|
|
elif echo "$COMMITS" | grep -qE "^feat"; then
|
|
BUMP="minor"
|
|
REASON="Feature commits detected"
|
|
else
|
|
BUMP="patch"
|
|
REASON="Defaulting to patch (fixes or other changes)"
|
|
fi
|
|
|
|
echo "Suggested bump type: $BUMP"
|
|
echo "Reason: $REASON"
|
|
echo "bump=$BUMP" >> $GITHUB_OUTPUT
|
|
echo "reason=$REASON" >> $GITHUB_OUTPUT
|
|
|
|
- name: Comment bump type on PR
|
|
uses: actions/github-script@v7
|
|
with:
|
|
script: |
|
|
const bump = '${{ steps.bump_type.outputs.bump }}';
|
|
const reason = '${{ steps.bump_type.outputs.reason }}';
|
|
|
|
const comment = `
|
|
## 🏷️ Version Bump Analysis
|
|
|
|
**Suggested bump type:** \`${bump.toUpperCase()}\`
|
|
**Reason:** ${reason}
|
|
|
|
This PR will bump the version to the next ${bump} version when merged.
|
|
`;
|
|
|
|
github.rest.issues.createComment({
|
|
issue_number: context.issue.number,
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
body: comment
|
|
});
|