feat: Add woodpecker support
This commit is contained in:
106
.woodpecker/publish.yml
Normal file
106
.woodpecker/publish.yml
Normal file
@@ -0,0 +1,106 @@
|
||||
# Triggered on v*.*.* tags or manual dispatch. Builds all projects then
|
||||
# publishes each one to npm in a parallel matrix.
|
||||
|
||||
labels:
|
||||
platform: linux/amd64
|
||||
|
||||
when:
|
||||
- event: tag
|
||||
ref: refs/tags/v*.*.*
|
||||
- event: manual
|
||||
|
||||
variables:
|
||||
- &default_projects "reviews-stars"
|
||||
- &node_image "node:22"
|
||||
|
||||
# Perform a full clone with all tags so Nx affected and versioning work
|
||||
# correctly.
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
depth: 0
|
||||
tags: true
|
||||
|
||||
steps:
|
||||
# -------------------------------------------------------------------------
|
||||
# 1. Install dependencies
|
||||
# -------------------------------------------------------------------------
|
||||
- name: install
|
||||
image: *node_image
|
||||
commands:
|
||||
- npm ci --legacy-peer-deps
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 2. Build all projects
|
||||
# PUBLISH_PROJECTS can be overridden at dispatch time via the Woodpecker
|
||||
# UI / API by setting the environment variable.
|
||||
# -------------------------------------------------------------------------
|
||||
- name: build
|
||||
image: *node_image
|
||||
environment:
|
||||
PUBLISH_PROJECTS: *default_projects
|
||||
commands:
|
||||
- PROJECTS="${PUBLISH_PROJECTS:-reviews-stars}"
|
||||
- echo "Projects to build $PROJECTS"
|
||||
- npx nx run-many --target=build --projects="$PROJECTS"
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 3. Determine the version and npm dist-tag, then publish every project.
|
||||
#
|
||||
# For tag events : version is derived from the tag (strips leading "v").
|
||||
# For manual runs : VERSION env-var must be supplied via the Woodpecker
|
||||
# UI / API (Settings → Secrets or the trigger form).
|
||||
#
|
||||
# NPM_TAG logic:
|
||||
# - Explicit NPM_TAG env-var overrides everything.
|
||||
# - A version containing "-" (pre-release) defaults to "next".
|
||||
# - Otherwise defaults to "latest".
|
||||
#
|
||||
# Matrix: one step instance per project in PUBLISH_PROJECTS.
|
||||
# Add more projects to the matrix list as the monorepo grows.
|
||||
# -------------------------------------------------------------------------
|
||||
- name: publish
|
||||
image: *node_image
|
||||
environment:
|
||||
# Supplied as a Woodpecker secret – never hard-code the token.
|
||||
NODE_AUTH_TOKEN:
|
||||
from_secret: NPM_TOKEN
|
||||
# Optional overrides settable at dispatch time.
|
||||
PUBLISH_PROJECTS: *default_projects
|
||||
# VERSION and NPM_TAG can be injected via the Woodpecker UI / API at
|
||||
# manual-dispatch time.
|
||||
VERSION: ""
|
||||
NPM_TAG: ""
|
||||
matrix:
|
||||
PROJECT:
|
||||
- reviews-stars
|
||||
commands:
|
||||
# --- Resolve version ---------------------------------------------------
|
||||
- |
|
||||
if [ -n "$VERSION" ]; then
|
||||
RESOLVED_VERSION="$VERSION"
|
||||
elif [ "$CI_PIPELINE_EVENT" = "tag" ]; then
|
||||
# Strip the leading "v" from the tag name.
|
||||
RESOLVED_VERSION="${CI_COMMIT_TAG#v}"
|
||||
else
|
||||
echo "No version provided for manual dispatch. Set the VERSION environment variable." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Resolve npm dist-tag ----------------------------------------------
|
||||
- |
|
||||
if [ -n "$NPM_TAG" ]; then
|
||||
RESOLVED_NPM_TAG="$NPM_TAG"
|
||||
elif echo "$RESOLVED_VERSION" | grep -q "-"; then
|
||||
RESOLVED_NPM_TAG="next"
|
||||
else
|
||||
RESOLVED_NPM_TAG="latest"
|
||||
fi
|
||||
|
||||
# --- Configure npm authentication -------------------------------------
|
||||
- echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > ~/.npmrc
|
||||
|
||||
# --- Publish ----------------------------------------------------------
|
||||
- echo "Publishing ${PROJECT} @ ${RESOLVED_VERSION} with tag ${RESOLVED_NPM_TAG}"
|
||||
- node tools/scripts/publish.mjs "$PROJECT" "$RESOLVED_VERSION" "$RESOLVED_NPM_TAG"
|
||||
27
.woodpecker/test-pr.yml
Normal file
27
.woodpecker/test-pr.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
# Runs on every pull request to build and test the libraries.
|
||||
|
||||
when:
|
||||
- event: pull_request
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
depth: 0
|
||||
tags: true
|
||||
|
||||
steps:
|
||||
- name: install
|
||||
image: node:22
|
||||
commands:
|
||||
- npm ci --legacy-peer-deps
|
||||
|
||||
- name: build
|
||||
image: node:22
|
||||
commands:
|
||||
- npx nx run-many -t build --projects="reviews-stars"
|
||||
|
||||
- name: test
|
||||
image: node:22
|
||||
commands:
|
||||
- npx nx run-many -t test --code-coverage --passWithNoTests --projects="reviews-stars"
|
||||
Reference in New Issue
Block a user