diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml deleted file mode 100644 index 120cbaf..0000000 --- a/.woodpecker/build.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Build workflow: runs after lint (shared workspace). -# Same triggers as lint: PR, push/tag/manual on main, or manual. -when: - - event: pull_request - - event: push - branch: main - - event: tag - - event: manual - -depends_on: - - lint - -steps: - - name: build - image: node:20-alpine - commands: - - corepack enable && corepack prepare pnpm@10.28.2 --activate - - pnpm run build diff --git a/.woodpecker/lint.yaml b/.woodpecker/ci.yaml similarity index 55% rename from .woodpecker/lint.yaml rename to .woodpecker/ci.yaml index 3fecaa6..e7b080d 100644 --- a/.woodpecker/lint.yaml +++ b/.woodpecker/ci.yaml @@ -1,5 +1,6 @@ -# Lint workflow: install deps + run lint (shared workspace with build, test). +# CI workflow: one clone, one workspace — install → lint → build → test. # Runs on pull requests, push/tag/manual on main, or manual from any branch. +# Deploy workflow depends on this (ci) and runs only on main. when: - event: pull_request - event: push @@ -20,3 +21,15 @@ steps: - corepack enable && corepack prepare pnpm@10.28.2 --activate - pnpm run lint - pnpm run lint:css + + - name: build + image: node:20-alpine + commands: + - corepack enable && corepack prepare pnpm@10.28.2 --activate + - pnpm run build + + - name: test + image: node:20-alpine + commands: + - corepack enable && corepack prepare pnpm@10.28.2 --activate + - pnpm test diff --git a/.woodpecker/deploy.yaml b/.woodpecker/deploy.yaml index 4ce0d89..3428a83 100644 --- a/.woodpecker/deploy.yaml +++ b/.woodpecker/deploy.yaml @@ -1,14 +1,12 @@ # Deploy workflow: Docker image → push to registry → Portainer webhook. # Runs on push to main, tag, or manual (only when on main). -# Waits for lint, build, and test workflows to succeed first. +# Waits for ci workflow (install → lint → build → test) to succeed first. when: branch: main event: [push, tag, manual] depends_on: - - lint - - build - - test + - ci steps: - name: 'Docker image build' diff --git a/.woodpecker/test.yaml b/.woodpecker/test.yaml deleted file mode 100644 index d3a5f61..0000000 --- a/.woodpecker/test.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Test workflow: runs after lint and build (shared workspace). -# Same triggers as lint: PR, push/tag/manual on main, or manual. -when: - - event: pull_request - - event: push - branch: main - - event: tag - - event: manual - -depends_on: - - lint - - build - -steps: - - name: test - image: node:20-alpine - commands: - - corepack enable && corepack prepare pnpm@10.28.2 --activate - - pnpm test diff --git a/README.md b/README.md index 61b8178..1992f17 100644 --- a/README.md +++ b/README.md @@ -104,10 +104,8 @@ mifi-ventures-landing/ │ ├── devcontainer.json # Dev container config (extensions) │ └── Dockerfile # Dev container image (Node) ├── .woodpecker/ # CI/CD pipelines (see below) -│ ├── lint.yaml # install + lint (runs on PR, main, manual) -│ ├── build.yaml # build (after lint) -│ ├── test.yaml # test (after lint + build) -│ └── deploy.yaml # Docker → push → webhook (main only, after lint/build/test) +│ ├── ci.yaml # one clone/workspace: install → lint → build → test +│ └── deploy.yaml # Docker → push → webhook (main only, after ci) ├── Dockerfile # Production container (nginx:alpine) ├── nginx.conf # nginx web server configuration ├── svelte.config.js # SvelteKit config (adapter-static) @@ -142,10 +140,10 @@ mifi-ventures-landing/ ### Pipeline Overview -Woodpecker uses four workflows (`.woodpecker/lint.yaml`, `build.yaml`, `test.yaml`, `deploy.yaml`): +Woodpecker uses two workflows (`.woodpecker/ci.yaml`, `deploy.yaml`): -- **Pull requests** (and **push/tag/manual on main**): Run **lint** → **build** → **test** in order (shared workspace). No Docker or deploy on PRs. -- **Push to main** (or tag / manual on main): After lint, build, and test succeed, **deploy** runs: +- **Pull requests** (and **push/tag/manual on main**): **ci** runs install → lint → build → test in one workspace (one clone, one install). No Docker or deploy on PRs. +- **Push to main** (or tag / manual on main): After ci succeeds, **deploy** runs: 1. **Build** — Builds Docker image tagged with commit SHA + `latest` 2. **Push** — Pushes images to private Docker registry