fix: add resource requests and scheduling docs to woodpecker pipeline

- Add backend_options.kubernetes.resources to all build/test steps
- Helps scheduler spread pods across cluster nodes (works with
  agent-level WOODPECKER_BACKEND_K8S_POD_AFFINITY anti-affinity)
- Build steps: 1Gi/1000m requests, 2Gi/4000m limits
- Test steps: 256-512Mi/200-500m requests
This commit is contained in:
Celes Renata
2026-04-20 02:48:47 +00:00
parent 898f89926d
commit 8e90b49f78
+166 -1
View File
@@ -1,6 +1,10 @@
# Woodpecker CI pipeline for Stonks Oracle # Woodpecker CI pipeline for Stonks Oracle
# Translates .github/workflows/build.yml into Woodpecker native format # Translates .github/workflows/build.yml into Woodpecker native format
# Images push to registry.celestium.life/stonks-oracle/<service>:<sha> and :latest # Images push to registry.celestium.life/stonks-oracle/<service>:<sha> and :latest
#
# Scheduling: Pipeline pods are spread across cluster nodes via agent-level
# podAntiAffinity (WOODPECKER_BACKEND_K8S_POD_AFFINITY). Resource requests
# below help the scheduler make balanced placement decisions.
steps: steps:
lint-python: lint-python:
@@ -9,6 +13,15 @@ steps:
- pip install ruff==0.15.10 --quiet - pip install ruff==0.15.10 --quiet
- ruff --version - ruff --version
- ruff check --output-format=concise . - ruff check --output-format=concise .
backend_options:
kubernetes:
resources:
requests:
memory: 256Mi
cpu: 200m
limits:
memory: 512Mi
cpu: 1000m
when: when:
event: [push, pull_request] event: [push, pull_request]
@@ -18,6 +31,15 @@ steps:
- pip install -r requirements.txt --quiet - pip install -r requirements.txt --quiet
- pip install hypothesis --quiet - pip install hypothesis --quiet
- pytest tests/ -x --tb=short -q --ignore=tests/integration - pytest tests/ -x --tb=short -q --ignore=tests/integration
backend_options:
kubernetes:
resources:
requests:
memory: 512Mi
cpu: 500m
limits:
memory: 1Gi
cpu: 2000m
when: when:
event: [push, pull_request] event: [push, pull_request]
@@ -27,6 +49,15 @@ steps:
- cd frontend - cd frontend
- npm ci - npm ci
- npx vitest --run - npx vitest --run
backend_options:
kubernetes:
resources:
requests:
memory: 512Mi
cpu: 500m
limits:
memory: 1Gi
cpu: 2000m
when: when:
event: [push, pull_request] event: [push, pull_request]
@@ -60,6 +91,15 @@ steps:
- latest - latest
dockerfile: docker/Dockerfile.scheduler dockerfile: docker/Dockerfile.scheduler
context: . context: .
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -99,6 +139,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=uvicorn services.symbol_registry.app:app --host 0.0.0.0 --port 8000" build_args: "SERVICE_CMD=uvicorn services.symbol_registry.app:app --host 0.0.0.0 --port 8000"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -138,6 +187,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.ingestion.worker" build_args: "SERVICE_CMD=python -m services.ingestion.worker"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -177,6 +235,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.parser.worker" build_args: "SERVICE_CMD=python -m services.parser.worker"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -216,6 +283,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.extractor.worker" build_args: "SERVICE_CMD=python -m services.extractor.worker"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -255,6 +331,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.aggregation.worker" build_args: "SERVICE_CMD=python -m services.aggregation.worker"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -294,6 +379,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.recommendation.worker" build_args: "SERVICE_CMD=python -m services.recommendation.worker"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -333,6 +427,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=uvicorn services.risk.app:app --host 0.0.0.0 --port 8000" build_args: "SERVICE_CMD=uvicorn services.risk.app:app --host 0.0.0.0 --port 8000"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -372,6 +475,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.adapters.broker_adapter" build_args: "SERVICE_CMD=python -m services.adapters.broker_adapter"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -411,6 +523,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=python -m services.lake_publisher.worker" build_args: "SERVICE_CMD=python -m services.lake_publisher.worker"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -450,6 +571,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=uvicorn services.api.app:app --host 0.0.0.0 --port 8000" build_args: "SERVICE_CMD=uvicorn services.api.app:app --host 0.0.0.0 --port 8000"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -489,6 +619,15 @@ steps:
dockerfile: docker/Dockerfile dockerfile: docker/Dockerfile
context: . context: .
build_args: "SERVICE_CMD=uvicorn services.trading.app:app --host 0.0.0.0 --port 8000" build_args: "SERVICE_CMD=uvicorn services.trading.app:app --host 0.0.0.0 --port 8000"
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -528,7 +667,15 @@ steps:
dockerfile: frontend/Dockerfile dockerfile: frontend/Dockerfile
context: frontend context: frontend
no_cache: true no_cache: true
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -567,6 +714,15 @@ steps:
- latest - latest
dockerfile: docker/Dockerfile.superset dockerfile: docker/Dockerfile.superset
context: docker context: docker
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 1000m
limits:
memory: 2Gi
cpu: 4000m
when: when:
event: push event: push
branch: main branch: main
@@ -584,6 +740,15 @@ steps:
from_secret: docker_password from_secret: docker_password
commands: commands:
- bash infra/inttest/run_pipeline.sh --image-tag ${CI_COMMIT_SHA} --results-file inttest-results.json - bash infra/inttest/run_pipeline.sh --image-tag ${CI_COMMIT_SHA} --results-file inttest-results.json
backend_options:
kubernetes:
resources:
requests:
memory: 256Mi
cpu: 200m
limits:
memory: 512Mi
cpu: 1000m
when: when:
event: push event: push
branch: main branch: main