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:
+166
-1
@@ -1,6 +1,10 @@
|
||||
# Woodpecker CI pipeline for Stonks Oracle
|
||||
# Translates .github/workflows/build.yml into Woodpecker native format
|
||||
# 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:
|
||||
lint-python:
|
||||
@@ -9,6 +13,15 @@ steps:
|
||||
- pip install ruff==0.15.10 --quiet
|
||||
- ruff --version
|
||||
- ruff check --output-format=concise .
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 256Mi
|
||||
cpu: 200m
|
||||
limits:
|
||||
memory: 512Mi
|
||||
cpu: 1000m
|
||||
when:
|
||||
event: [push, pull_request]
|
||||
|
||||
@@ -18,6 +31,15 @@ steps:
|
||||
- pip install -r requirements.txt --quiet
|
||||
- pip install hypothesis --quiet
|
||||
- pytest tests/ -x --tb=short -q --ignore=tests/integration
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 500m
|
||||
limits:
|
||||
memory: 1Gi
|
||||
cpu: 2000m
|
||||
when:
|
||||
event: [push, pull_request]
|
||||
|
||||
@@ -27,6 +49,15 @@ steps:
|
||||
- cd frontend
|
||||
- npm ci
|
||||
- npx vitest --run
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 512Mi
|
||||
cpu: 500m
|
||||
limits:
|
||||
memory: 1Gi
|
||||
cpu: 2000m
|
||||
when:
|
||||
event: [push, pull_request]
|
||||
|
||||
@@ -60,6 +91,15 @@ steps:
|
||||
- latest
|
||||
dockerfile: docker/Dockerfile.scheduler
|
||||
context: .
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -99,6 +139,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
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:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -138,6 +187,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
build_args: "SERVICE_CMD=python -m services.ingestion.worker"
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -177,6 +235,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
build_args: "SERVICE_CMD=python -m services.parser.worker"
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -216,6 +283,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
build_args: "SERVICE_CMD=python -m services.extractor.worker"
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -255,6 +331,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
build_args: "SERVICE_CMD=python -m services.aggregation.worker"
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -294,6 +379,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
build_args: "SERVICE_CMD=python -m services.recommendation.worker"
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -333,6 +427,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
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:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -372,6 +475,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
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:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -411,6 +523,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
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:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -450,6 +571,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
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:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -489,6 +619,15 @@ steps:
|
||||
dockerfile: docker/Dockerfile
|
||||
context: .
|
||||
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:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -528,7 +667,15 @@ steps:
|
||||
dockerfile: frontend/Dockerfile
|
||||
context: frontend
|
||||
no_cache: true
|
||||
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -567,6 +714,15 @@ steps:
|
||||
- latest
|
||||
dockerfile: docker/Dockerfile.superset
|
||||
context: docker
|
||||
backend_options:
|
||||
kubernetes:
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
cpu: 4000m
|
||||
when:
|
||||
event: push
|
||||
branch: main
|
||||
@@ -584,6 +740,15 @@ steps:
|
||||
from_secret: docker_password
|
||||
commands:
|
||||
- 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:
|
||||
event: push
|
||||
branch: main
|
||||
|
||||
Reference in New Issue
Block a user