/ .woodpecker.yml
.woodpecker.yml
 1  when:
 2    - event: push
 3      branch: main
 4    - event: pull_request
 5    - event: manual
 6  
 7  steps:
 8    - name: validate
 9      image: node:20-alpine
10      commands:
11        - npm ci
12        - npm run lint || true
13        - npm run typecheck || true
14  
15    - name: test
16      image: node:20-alpine
17      commands:
18        - npm run test || npm run test:unit || true
19  
20    - name: storybook-build
21      image: node:20-alpine
22      commands:
23        - npm run build-storybook || npx storybook build || echo "No storybook build script — add build-storybook to package.json"
24  
25    - name: tokens-export
26      image: node:20-alpine
27      commands:
28        - npm run build:tokens || npm run tokens:build || npx style-dictionary build || echo "No tokens build script — add tokens:build to package.json"
29  
30    - name: chromatic
31      image: node:20-alpine
32      environment:
33        CHROMATIC_PROJECT_TOKEN:
34          from_secret: CHROMATIC_PROJECT_TOKEN
35      when:
36        - event: push
37          branch: main
38      commands:
39        - npx chromatic --project-token=$CHROMATIC_PROJECT_TOKEN --exit-zero-on-changes || echo "Chromatic not configured yet — add CHROMATIC_PROJECT_TOKEN secret when ready"
40  
41    - name: radicle-sync
42      image: alpine/git
43      failure: ignore
44      when:
45        - event: push
46          branch: main
47      commands:
48        - apk add -q curl
49        - curl -sfX POST "http://source.ac-dc.network:9876/push?repo=acdc-design" && echo "Radicle sync triggered" || echo "Radicle sync failed (non-fatal)"