A personal media tracker built on the AT Protocol opnshelf.xyz
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: consolidate CI workflows into a single configuration

- Removed individual CI workflow files for API, Backend, Mobile, and Web.
- Introduced a unified CI workflow that utilizes path filters to determine which jobs to run based on changes in the repository.
- Each job (web, backend, mobile, api) is conditionally executed based on the relevant paths modified in the push or pull request.

+154 -159
-35
.github/workflows/ci-api.yml
··· 1 - name: CI (API package) 2 - 3 - on: 4 - push: 5 - branches: [main] 6 - paths: ["packages/api/**", "pnpm-lock.yaml", "package.json"] 7 - pull_request: 8 - branches: [main] 9 - paths: ["packages/api/**", "pnpm-lock.yaml", "package.json"] 10 - 11 - concurrency: 12 - group: ${{ github.workflow }}-${{ github.ref }} 13 - cancel-in-progress: true 14 - 15 - jobs: 16 - ci: 17 - runs-on: ubuntu-latest 18 - steps: 19 - - name: Checkout 20 - uses: actions/checkout@v4 21 - 22 - - name: Install pnpm 23 - uses: pnpm/action-setup@v4 24 - 25 - - name: Setup Node 26 - uses: actions/setup-node@v4 27 - with: 28 - node-version: "20" 29 - cache: "pnpm" 30 - 31 - - name: Install dependencies 32 - run: pnpm install --frozen-lockfile 33 - 34 - - name: Typecheck 35 - run: pnpm --filter @opnshelf/api exec tsc --noEmit
-47
.github/workflows/ci-backend.yml
··· 1 - name: CI (Backend) 2 - 3 - on: 4 - push: 5 - branches: [main] 6 - paths: ["backend/**", "pnpm-lock.yaml", "package.json"] 7 - pull_request: 8 - branches: [main] 9 - paths: ["backend/**", "pnpm-lock.yaml", "package.json"] 10 - 11 - concurrency: 12 - group: ${{ github.workflow }}-${{ github.ref }} 13 - cancel-in-progress: true 14 - 15 - jobs: 16 - ci: 17 - runs-on: ubuntu-latest 18 - steps: 19 - - name: Checkout 20 - uses: actions/checkout@v4 21 - 22 - - name: Install pnpm 23 - uses: pnpm/action-setup@v4 24 - 25 - - name: Setup Node 26 - uses: actions/setup-node@v4 27 - with: 28 - node-version: "20" 29 - cache: "pnpm" 30 - 31 - - name: Install dependencies 32 - run: pnpm install --frozen-lockfile 33 - 34 - - name: Prisma generate 35 - run: pnpm --filter backend exec prisma generate 36 - 37 - - name: Lint 38 - run: pnpm --filter backend run lint 39 - 40 - - name: Typecheck 41 - run: pnpm --filter backend exec tsc --noEmit 42 - 43 - - name: Test 44 - run: pnpm --filter backend run test 45 - 46 - - name: Build 47 - run: pnpm --filter backend run build
-38
.github/workflows/ci-mobile.yml
··· 1 - name: CI (Mobile) 2 - 3 - on: 4 - push: 5 - branches: [main] 6 - paths: ["apps/mobile/**", "packages/**", "pnpm-lock.yaml", "package.json"] 7 - pull_request: 8 - branches: [main] 9 - paths: ["apps/mobile/**", "packages/**", "pnpm-lock.yaml", "package.json"] 10 - 11 - concurrency: 12 - group: ${{ github.workflow }}-${{ github.ref }} 13 - cancel-in-progress: true 14 - 15 - jobs: 16 - ci: 17 - runs-on: ubuntu-latest 18 - steps: 19 - - name: Checkout 20 - uses: actions/checkout@v4 21 - 22 - - name: Install pnpm 23 - uses: pnpm/action-setup@v4 24 - 25 - - name: Setup Node 26 - uses: actions/setup-node@v4 27 - with: 28 - node-version: "20" 29 - cache: "pnpm" 30 - 31 - - name: Install dependencies 32 - run: pnpm install --frozen-lockfile 33 - 34 - - name: Lint 35 - run: pnpm --filter mobile run lint 36 - 37 - - name: Typecheck 38 - run: pnpm --filter mobile exec tsc --noEmit
-39
.github/workflows/ci-web.yml
··· 1 - name: CI (Web) 2 - 3 - on: 4 - push: 5 - branches: [main] 6 - paths: ["apps/web/**", "packages/**", "pnpm-lock.yaml", "package.json"] 7 - pull_request: 8 - branches: [main] 9 - paths: ["apps/web/**", "packages/**", "pnpm-lock.yaml", "package.json"] 10 - 11 - concurrency: 12 - group: ${{ github.workflow }}-${{ github.ref }} 13 - cancel-in-progress: true 14 - 15 - jobs: 16 - ci: 17 - runs-on: ubuntu-latest 18 - steps: 19 - - name: Checkout 20 - uses: actions/checkout@v4 21 - 22 - - name: Install pnpm 23 - uses: pnpm/action-setup@v4 24 - 25 - - name: Setup Node 26 - uses: actions/setup-node@v4 27 - with: 28 - node-version: "20" 29 - cache: "pnpm" 30 - 31 - - name: Install dependencies 32 - run: pnpm install --frozen-lockfile 33 - 34 - - name: Lint 35 - run: pnpm --filter "./apps/web" run check 36 - 37 - - name: Typecheck 38 - run: pnpm --filter "./apps/web" exec tsc --noEmit 39 -
+154
.github/workflows/ci.yml
··· 1 + name: CI 2 + 3 + on: 4 + push: 5 + branches: [main] 6 + pull_request: 7 + branches: [main] 8 + 9 + concurrency: 10 + group: ${{ github.workflow }}-${{ github.ref }} 11 + cancel-in-progress: true 12 + 13 + jobs: 14 + changes: 15 + runs-on: ubuntu-latest 16 + outputs: 17 + web: ${{ steps.filter.outputs.web }} 18 + backend: ${{ steps.filter.outputs.backend }} 19 + mobile: ${{ steps.filter.outputs.mobile }} 20 + api: ${{ steps.filter.outputs.api }} 21 + steps: 22 + - uses: actions/checkout@v4 23 + - uses: dorny/paths-filter@v3 24 + id: filter 25 + with: 26 + filters: | 27 + web: 28 + - 'apps/web/**' 29 + - 'packages/**' 30 + - 'pnpm-lock.yaml' 31 + - 'package.json' 32 + backend: 33 + - 'backend/**' 34 + - 'pnpm-lock.yaml' 35 + - 'package.json' 36 + mobile: 37 + - 'apps/mobile/**' 38 + - 'packages/**' 39 + - 'pnpm-lock.yaml' 40 + - 'package.json' 41 + api: 42 + - 'packages/api/**' 43 + - 'pnpm-lock.yaml' 44 + - 'package.json' 45 + 46 + web: 47 + needs: changes 48 + if: ${{ needs.changes.outputs.web == 'true' }} 49 + runs-on: ubuntu-latest 50 + steps: 51 + - name: Checkout 52 + uses: actions/checkout@v4 53 + 54 + - name: Install pnpm 55 + uses: pnpm/action-setup@v4 56 + 57 + - name: Setup Node 58 + uses: actions/setup-node@v4 59 + with: 60 + node-version: "20" 61 + cache: "pnpm" 62 + 63 + - name: Install dependencies 64 + run: pnpm install --frozen-lockfile 65 + 66 + - name: Lint 67 + run: pnpm --filter "./apps/web" run check 68 + 69 + - name: Typecheck 70 + run: pnpm --filter "./apps/web" exec tsc --noEmit 71 + 72 + backend: 73 + needs: changes 74 + if: ${{ needs.changes.outputs.backend == 'true' }} 75 + runs-on: ubuntu-latest 76 + steps: 77 + - name: Checkout 78 + uses: actions/checkout@v4 79 + 80 + - name: Install pnpm 81 + uses: pnpm/action-setup@v4 82 + 83 + - name: Setup Node 84 + uses: actions/setup-node@v4 85 + with: 86 + node-version: "20" 87 + cache: "pnpm" 88 + 89 + - name: Install dependencies 90 + run: pnpm install --frozen-lockfile 91 + 92 + - name: Prisma generate 93 + run: pnpm --filter backend exec prisma generate 94 + 95 + - name: Lint 96 + run: pnpm --filter backend run lint 97 + 98 + - name: Typecheck 99 + run: pnpm --filter backend exec tsc --noEmit 100 + 101 + - name: Test 102 + run: pnpm --filter backend run test 103 + 104 + - name: Build 105 + run: pnpm --filter backend run build 106 + 107 + mobile: 108 + needs: changes 109 + if: ${{ needs.changes.outputs.mobile == 'true' }} 110 + runs-on: ubuntu-latest 111 + steps: 112 + - name: Checkout 113 + uses: actions/checkout@v4 114 + 115 + - name: Install pnpm 116 + uses: pnpm/action-setup@v4 117 + 118 + - name: Setup Node 119 + uses: actions/setup-node@v4 120 + with: 121 + node-version: "20" 122 + cache: "pnpm" 123 + 124 + - name: Install dependencies 125 + run: pnpm install --frozen-lockfile 126 + 127 + - name: Lint 128 + run: pnpm --filter mobile run lint 129 + 130 + - name: Typecheck 131 + run: pnpm --filter mobile exec tsc --noEmit 132 + 133 + api: 134 + needs: changes 135 + if: ${{ needs.changes.outputs.api == 'true' }} 136 + runs-on: ubuntu-latest 137 + steps: 138 + - name: Checkout 139 + uses: actions/checkout@v4 140 + 141 + - name: Install pnpm 142 + uses: pnpm/action-setup@v4 143 + 144 + - name: Setup Node 145 + uses: actions/setup-node@v4 146 + with: 147 + node-version: "20" 148 + cache: "pnpm" 149 + 150 + - name: Install dependencies 151 + run: pnpm install --frozen-lockfile 152 + 153 + - name: Typecheck 154 + run: pnpm --filter @opnshelf/api exec tsc --noEmit