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
172 lines
4.6 KiB
YAML
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]
|