Files
eleith 2b1b7a87de
ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/config Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
ci/woodpecker/push/cli Pipeline was successful
ci/woodpecker/push/config Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/tag/web Pipeline was successful
ci/woodpecker/tag/cli Pipeline was successful
Fix release tag validation in CI
2026-10-27 16:21:41 -07:00

172 lines
4.6 KiB
YAML

workspace:
base: /workspace
path: src
when:
- event: push
branch: main
path:
include:
- '*'
- .changeset/**
- docs/**
- .github/workflows/**
- .woodpecker/**
- apps/web/**
- packages/**
- event: pull_request
path:
include:
- '*'
- .changeset/**
- docs/**
- .github/workflows/**
- .woodpecker/**
- apps/web/**
- packages/**
- event: tag
ref: 'refs/tags/@directory/web@*'
steps:
prepare:
image: node:26.5.0-bookworm
environment:
COREPACK_HOME: /workspace/src/.pnpm-store/corepack
commands:
- npm install --global corepack@0.36.0
- corepack enable
- corepack install --global pnpm@11.9.0
- pnpm config set store-dir .pnpm-store
- pnpm install --frozen-lockfile
- pnpm build:packages
lint:
image: node:26.5.0-bookworm
environment:
COREPACK_HOME: /workspace/src/.pnpm-store/corepack
commands:
- npm install --global corepack@0.36.0
- corepack enable
- pnpm --filter @directory/web check
- pnpm lint
build:
image: node:26.5.0-bookworm
environment:
COREPACK_HOME: /workspace/src/.pnpm-store/corepack
commands:
- npm install --global corepack@0.36.0
- corepack enable
- pnpm --filter @directory/web build
test:
image: node:26.5.0-bookworm
environment:
COREPACK_HOME: /workspace/src/.pnpm-store/corepack
commands:
- npm install --global corepack@0.36.0
- corepack enable
- pnpm --filter @directory/web test:coverage
e2e:
image: git.eleith.com/eleith.private/playwright:1.61.1-node26
commands:
- node --version
- pnpm --version
- node --eval "if (process.versions.node !== '26.5.0') throw new Error('Expected Node 26.5.0')"
- test "$(pnpm --version)" = "11.9.0"
- pnpm --filter @directory/web test:e2e
config-checks:
image: node:26.5.0-bookworm
environment:
COREPACK_HOME: /workspace/src/.pnpm-store/corepack
commands:
- npm install --global corepack@0.36.0
- corepack enable
- pnpm schema:check
- pnpm --filter @directory/config check
- pnpm --filter @directory/config test
when:
- event: push
branch: main
- event: tag
ref: 'refs/tags/@directory/web@*'
check-version-and-extract-tags:
image: node:26.5.0-bookworm
commands:
- |
node --input-type=module <<'NODE'
import { readFileSync, writeFileSync } from 'node:fs';
const tag = process.env.CI_COMMIT_TAG ?? '';
const match = /^@directory\\/web@((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*))$/.exec(tag);
if (!match || match[0] !== tag) {
throw new Error('Expected a stable @directory/web@<major>.<minor>.<patch> tag');
}
const version = JSON.parse(readFileSync('apps/web/package.json', 'utf8')).version;
if (match[1] !== version) {
throw new Error('Release tag must exactly match apps/web/package.json version');
}
const [major, minor] = version.split('.');
writeFileSync('.tags', [version, major + '.' + minor, major].join('\n') + '\n');
NODE
when:
- event: tag
ref: 'refs/tags/@directory/web@*'
build-docker-main:
image: woodpeckerci/plugin-docker-buildx:6.0.3
settings:
repo: git.eleith.com/eleith.private/directory
username: eleith
registry: https://git.eleith.com
context: .
dockerfile: apps/web/Dockerfile
target: prod
platforms: linux/amd64
tags:
- latest
password:
from_secret: gitea_docker_registry
when:
- event: push
branch: main
build-docker-tag:
image: woodpeckerci/plugin-docker-buildx:6.0.3
settings:
repo: git.eleith.com/eleith.private/directory
username: eleith
registry: https://git.eleith.com
context: .
dockerfile: apps/web/Dockerfile
target: prod
platforms: linux/amd64
tags_file: .tags
password:
from_secret: gitea_docker_registry
when:
- event: tag
ref: 'refs/tags/@directory/web@*'
notify:
image: deblan/woodpecker-email:3.3.0
settings:
dsn:
from_secret: woodpecker_email_dsn
from:
address:
from_secret: woodpecker_email_from_address
name:
from_secret: woodpecker_email_from_name
recipients:
from_secret: woodpecker_email_recipient
recipients_only: true
when:
- event: push
branch: main
status: [failure, success]