6a3f66b1a9
CI installed pnpm with 'npm install -g pnpm', which pulls the latest release and ignores the pnpm@10.33.0 pin in package.json's packageManager field. This let CI drift to a different pnpm major than the Docker image and local dev, the exact drift Corepack prevents. Switch both the GitHub and Gitea build workflows to 'corepack enable', matching the Dockerfile assets stage and the documented model where local, CI, and Docker all follow the packageManager field. https://claude.ai/code/session_01VWXYQxUPWdhoV4otwr6Cyk
65 lines
1.5 KiB
YAML
65 lines
1.5 KiB
YAML
name: Django CI/CD
|
|
|
|
on:
|
|
push:
|
|
paths-ignore: [ 'README.md' ]
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v5
|
|
with:
|
|
enable-cache: false
|
|
python-version: "3.14"
|
|
|
|
- name: Install dependencies
|
|
run: uv sync --frozen
|
|
|
|
- name: Set up Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
|
|
- name: Install pnpm and JS dependencies
|
|
run: corepack enable && pnpm install --frozen-lockfile --ignore-scripts
|
|
|
|
- name: Build TypeScript
|
|
run: make ts
|
|
|
|
- name: Install Playwright browsers
|
|
run: uv run playwright install --with-deps chromium
|
|
|
|
- name: Run Migrations
|
|
run: uv run python manage.py migrate
|
|
|
|
- name: Run Tests
|
|
run: uv run --with pytest-django pytest
|
|
|
|
build-and-push:
|
|
needs: test
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/main'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set Version
|
|
run: echo "VERSION_NUMBER=1.7.0" >> $GITHUB_ENV
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Build and push
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: |
|
|
registry.kucharczyk.xyz/timetracker:latest
|
|
registry.kucharczyk.xyz/timetracker:${{ env.VERSION_NUMBER }}
|
|
# cache-from: type=gha
|
|
# cache-to: type=gha,mode=max
|