Merge pull request 'Fix media routing & CI Perfs' (#12) from dev into prod
All checks were successful
Backend Tests / test (push) Successful in 1m11s
Deploy to Production / Validate Build & Lint (backend) (push) Successful in 1m13s
Deploy to Production / Validate Build & Lint (documentation) (push) Successful in 1m26s
Lint / lint (backend) (push) Successful in 1m7s
Lint / lint (documentation) (push) Successful in 1m8s
Lint / lint (frontend) (push) Successful in 1m7s
Deploy to Production / Validate Build & Lint (frontend) (push) Successful in 1m23s
Deploy to Production / Deploy to Production (push) Successful in 1m51s

Reviewed-on: #12
This commit was merged in pull request #12.
This commit is contained in:
2026-01-15 00:01:34 +01:00
4 changed files with 71 additions and 43 deletions

View File

@@ -1,8 +1,12 @@
name: Backend Tests name: Backend Tests
on: on:
push: push:
paths: paths:
- 'backend/**' - 'backend/**'
pull_request:
paths:
- 'backend/**'
jobs: jobs:
test: test:
@@ -14,9 +18,19 @@ jobs:
version: 9 version: 9
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: 22 node-version: 20
cache: 'pnpm' - name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> "${GITEA_OUTPUT:-$GITHUB_OUTPUT}"
- uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies - name: Install dependencies
run: pnpm install run: pnpm install --frozen-lockfile
- name: Run Backend Tests - name: Run Backend Tests
run: pnpm -F @memegoat/backend test run: pnpm -F @memegoat/backend test

View File

@@ -1,61 +1,63 @@
name: Deploy to Production name: Deploy to Production
on: on:
push: push:
branches: branches:
- prod - prod
jobs: jobs:
deploy: validate:
name: Validate Build & Lint
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
component: [backend, frontend, documentation]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: 20 node-version: 20
- name: Install pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Get pnpm store directory - name: Get pnpm store directory
id: pnpm-cache
shell: bash shell: bash
run: | run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITEA_ENV echo "STORE_PATH=$(pnpm store path --silent)" >> "${GITEA_OUTPUT:-$GITHUB_OUTPUT}"
- name: Setup pnpm cache - name: Setup pnpm cache
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: ${{ env.STORE_PATH }} path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: | restore-keys: |
${{ runner.os }}-pnpm-store- ${{ runner.os }}-pnpm-store-
- name: Install dependencies - name: Install dependencies
run: pnpm install run: pnpm install --frozen-lockfile
- name: Lint - Backend - name: Lint ${{ matrix.component }}
run: pnpm run lint:back run: pnpm -F @memegoat/${{ matrix.component }} lint
- name: Build - Backend - name: Build ${{ matrix.component }}
run: pnpm run build:back run: pnpm -F @memegoat/${{ matrix.component }} build
env: env:
NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }} NEXT_PUBLIC_API_URL: ${{ secrets.NEXT_PUBLIC_API_URL }}
- name: Lint - Frontend deploy:
run: pnpm run lint:front name: Deploy to Production
needs: validate
- name: Build - Frontend runs-on: ubuntu-latest
run: pnpm run build:front steps:
- name: Checkout code
- name: Lint - Documentation uses: actions/checkout@v4
run: pnpm run lint:docs
- name: Build - Documentation
run: pnpm run build:docs
- name: Deploy with Docker Compose - name: Deploy with Docker Compose
run: | run: |

View File

@@ -1,14 +1,23 @@
name: Lint name: Lint
on: on:
push: push:
paths: paths:
- 'frontend/**' - 'frontend/**'
- 'backend/**' - 'backend/**'
- 'documentation/**' - 'documentation/**'
pull_request:
paths:
- 'frontend/**'
- 'backend/**'
- 'documentation/**'
jobs: jobs:
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
component: [backend, frontend, documentation]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4
@@ -16,16 +25,19 @@ jobs:
version: 9 version: 9
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
with: with:
node-version: 22 node-version: 20
cache: 'pnpm' - name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> "${GITEA_OUTPUT:-$GITHUB_OUTPUT}"
- uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install dependencies - name: Install dependencies
run: pnpm install run: pnpm install --frozen-lockfile
- name: Lint Frontend - name: Lint ${{ matrix.component }}
if: success() || failure() run: pnpm -F @memegoat/${{ matrix.component }} lint
run: pnpm -F @memegoat/frontend lint
- name: Lint Backend
if: success() || failure()
run: pnpm -F @memegoat/backend lint
- name: Lint Documentation
if: success() || failure()
run: pnpm -F @bypass/documentation lint

View File

@@ -6,7 +6,7 @@ import { S3Service } from "../s3/s3.service";
export class MediaController { export class MediaController {
constructor(private readonly s3Service: S3Service) {} constructor(private readonly s3Service: S3Service) {}
@Get(":key(*)") @Get("*key")
async getFile(@Param("key") key: string, @Res() res: Response) { async getFile(@Param("key") key: string, @Res() res: Response) {
try { try {
const stats = await this.s3Service.getFileInfo(key); const stats = await this.s3Service.getFileInfo(key);