8cea7dee20
- SiteForge Enterprise V8.10.0-dev.1 upstream source (210 tests) - Fix: v8_workflows._mapped_input now reads both 类型/分类 columns so WXR imports keep post/product types instead of collapsing to page - Docs: trade-pro theme port spec (R3) and implementation plan Co-Authored-By: Claude Code <noreply@anthropic.com>
91 lines
3.5 KiB
YAML
91 lines
3.5 KiB
YAML
name: SiteForge quality gates
|
|
on:
|
|
push:
|
|
pull_request:
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
tests:
|
|
runs-on: ubuntu-24.04
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python: ['3.12', '3.13']
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python }}
|
|
cache: pip
|
|
- name: Install locked dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install -r requirements-dev.lock
|
|
python -m pip check
|
|
- name: Validate Python and tests
|
|
env:
|
|
SITEFORGE_ADMIN_PASSWORD: administrator-strong-password-for-ci
|
|
SITEFORGE_SESSION_SECRET: ci-only-session-key-not-for-production-with-entropy
|
|
run: |
|
|
bash scripts/check.sh
|
|
container:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Validate Compose
|
|
env:
|
|
SITEFORGE_ADMIN_PASSWORD: ci-test-only-not-production
|
|
SITEFORGE_SESSION_SECRET: ci-test-only-session-key-not-for-production-123456
|
|
SITEFORGE_PG_PASSWORD: ci-postgresql-password
|
|
SITEFORGE_DEPLOY_SECRET: ci-release-secret-should-not-be-used-in-production
|
|
run: |
|
|
docker compose config --quiet
|
|
docker compose -f compose.enterprise.yaml config --quiet
|
|
docker compose -f compose.release-agent.yaml config --quiet
|
|
- name: One-command Compose build and start smoke
|
|
env:
|
|
SITEFORGE_ADMIN_PASSWORD: ci-test-only-not-production
|
|
SITEFORGE_SESSION_SECRET: ci-test-only-session-key-not-for-production-123456
|
|
run: |
|
|
docker compose up -d --build
|
|
for n in $(seq 1 45); do
|
|
web=$(docker inspect --format='{{.State.Health.Status}}' "$(docker compose ps -q siteforge)" 2>/dev/null || true)
|
|
worker=$(docker inspect --format='{{.State.Health.Status}}' "$(docker compose ps -q worker)" 2>/dev/null || true)
|
|
if [ "$web" = healthy ] && [ "$worker" = healthy ]; then break; fi
|
|
sleep 2
|
|
done
|
|
test "$web" = healthy && test "$worker" = healthy
|
|
docker compose exec -T siteforge python -c "import json,urllib.request; data=json.load(urllib.request.urlopen('http://127.0.0.1:8787/api/health')); assert data['version']=='8.10.0-dev.1' and data.get('commit')"
|
|
- name: Stop Compose smoke
|
|
if: always()
|
|
env:
|
|
SITEFORGE_ADMIN_PASSWORD: ci-test-only-not-production
|
|
SITEFORGE_SESSION_SECRET: ci-test-only-session-key-not-for-production-123456
|
|
run: docker compose down -v --remove-orphans
|
|
|
|
postgres-smoke:
|
|
runs-on: ubuntu-24.04
|
|
services:
|
|
postgres:
|
|
image: postgres:16.9-alpine
|
|
env:
|
|
POSTGRES_USER: siteforge
|
|
POSTGRES_PASSWORD: postgres-ci-only
|
|
POSTGRES_DB: siteforge_ci
|
|
ports:
|
|
- 5432:5432
|
|
options: >-
|
|
--health-cmd "pg_isready -U siteforge -d siteforge_ci"
|
|
--health-interval 10s --health-timeout 5s --health-retries 5
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- name: Install pinned dependencies and PG driver
|
|
run: pip install -r requirements.lock -r requirements-enterprise.txt
|
|
- name: Bootstrap PG and verify transactional queue
|
|
env:
|
|
SITEFORGE_DATABASE_URL: postgresql://siteforge:postgres-ci-only@127.0.0.1:5432/siteforge_ci
|
|
run: python scripts/verify_pg_bootstrap.py
|