Aethel Bot OSS repository!
aethel.xyz
bot
fun
ai
discord
discord-bot
aethel
1name: Pull Request Checks
2
3on:
4 pull_request:
5 branches: [main, dev]
6 types: [opened, synchronize, reopened]
7
8jobs:
9 pr-checks:
10 name: PR Quality Checks
11 runs-on: self-hosted
12 permissions:
13 contents: read
14 pull-requests: read
15 statuses: write
16
17 steps:
18 - name: Checkout code
19 uses: actions/checkout@v4
20 with:
21 fetch-depth: 0
22
23 - name: Setup Bun
24 uses: oven-sh/setup-bun@v2
25 with:
26 bun-version: latest
27
28 - name: Install backend dependencies
29 run: bun install --frozen-lockfile
30
31 - name: Install frontend dependencies
32 run: |
33 cd web
34 bun install --frozen-lockfile
35
36 - name: Check backend build
37 run: bun run build
38
39 - name: TypeScript check frontend
40 run: |
41 cd web
42 bunx tsc --noEmit
43
44 - name: Check frontend build
45 run: |
46 cd web
47 bun run build
48
49 - name: Run backend linting
50 run: bunx --bun eslint ./src ./web/src --ext .ts,.tsx
51
52 - name: Check code formatting
53 run: bunx --bun prettier --check "**/*.{js,json,md,ts,tsx}" --ignore-path .prettierignore
54
55 - name: Validate PR title
56 uses: amannn/action-semantic-pull-request@v5
57 env:
58 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59 with:
60 types: |
61 feat
62 fix
63 docs
64 style
65 refactor
66 perf
67 test
68 chore
69 requireScope: false
70
71 size-check:
72 name: Bundle Size Check
73 runs-on: self-hosted
74 permissions:
75 contents: read
76 pull-requests: read
77
78 steps:
79 - name: Checkout code
80 uses: actions/checkout@v4
81
82 - name: Setup Bun
83 uses: oven-sh/setup-bun@v2
84 with:
85 bun-version: latest
86
87 - name: Install frontend dependencies
88 run: |
89 cd web
90 bun install --frozen-lockfile
91
92 - name: Build frontend for size check
93 run: |
94 cd web
95 bun run build
96
97 - name: Check bundle size
98 run: |
99 cd web
100 echo "Frontend build size:"
101 du -sh dist/
102 echo "Individual asset sizes:"
103 find dist/ -name "*.js" -o -name "*.css" | xargs ls -lh