Compare commits

...

3 Commits

Author SHA1 Message Date
xiaoxia fe47eb09d2 chore: trigger CI for routing verification
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 30s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m5s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m11s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m1s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
2026-07-14 14:19:07 +08:00
xiaoxia 1effd36925 chore: trigger ci - routing test
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 35s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m18s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m50s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m29s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
2026-07-14 13:22:48 +08:00
xiaoxia 350bc72fdd feat(ci): Runner标签分层路由
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 31s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m16s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m17s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m22s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
- 测试类Job(validate/unit/integration/frontend-lint)路由到ci-check标签Runner
- 构建部署类Job路由到build-only标签Runner
- 保留host标签确保兼容
- 6个新Runner专跑测试,3个旧Runner专跑构建,互不抢资源
2026-07-14 11:55:04 +08:00
2 changed files with 12 additions and 64 deletions
+1 -1
View File
@@ -1 +1 @@
# CI trigger Fri Jun 26 09:53:28 PM CST 2026
trigger: 1784009947
+11 -63
View File
@@ -26,7 +26,7 @@ concurrency:
jobs:
validate:
name: Validate Code Quality And Tests
runs-on: host
runs-on: [host, ci-check]
timeout-minutes: 10
env:
@@ -164,7 +164,7 @@ jobs:
unit-tests:
name: Unit Tests
runs-on: host
runs-on: [host, ci-check]
timeout-minutes: 8
env:
@@ -282,7 +282,7 @@ jobs:
integration-tests:
name: Integration Tests
runs-on: host
runs-on: [host, ci-check]
timeout-minutes: 20
if: always()
needs: validate
@@ -543,7 +543,7 @@ jobs:
frontend-lint:
name: Frontend Lint
runs-on: host
runs-on: [host, ci-check]
timeout-minutes: 10
steps:
@@ -653,7 +653,7 @@ jobs:
deploy-staging:
name: Build & Push Staging (Watchtower auto-deploy)
runs-on: saas
runs-on: [host, build-only]
timeout-minutes: 30
needs: [validate, frontend-lint]
@@ -802,7 +802,7 @@ jobs:
staging-e2e:
name: Staging E2E Tests
runs-on: saas
runs-on: [host, build-only]
timeout-minutes: 15
if: github.ref_name == 'develop' || github.ref_name == 'main'
needs: deploy-staging
@@ -878,7 +878,7 @@ jobs:
staging-api-tests:
name: Staging API Integration Tests
runs-on: saas
runs-on: [host, build-only]
timeout-minutes: 10
if: github.ref_name == 'develop' || github.ref_name == 'main'
needs: deploy-staging
@@ -953,7 +953,7 @@ jobs:
build-production-runtime-images:
name: Build Production Runtime Images
runs-on: saas
runs-on: [host, build-only]
timeout-minutes: 30
needs: [validate, frontend-lint]
@@ -1041,58 +1041,12 @@ jobs:
deploy-production:
name: Deploy Production
runs-on: saas
runs-on: [host, build-only]
timeout-minutes: 20
if: startsWith(github.ref, 'refs/tags/v')
needs: build-production-runtime-images
steps:
- name: Checkout code
shell: sh
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
set -eu
python3 - <<'PY'
import io, os, tarfile, time, urllib.request, urllib.error
url = f"{os.environ['GITHUB_API_URL']}/repos/{os.environ['GITHUB_REPOSITORY']}/archive/{os.environ['GITHUB_SHA']}.tar.gz"
request = urllib.request.Request(url, headers={"Authorization": f"token {os.environ['GITHUB_TOKEN']}"})
last_err = None
for attempt in range(5):
try:
with urllib.request.urlopen(request, timeout=120) as response:
archive = response.read()
break
except urllib.error.HTTPError as e:
last_err = e
if e.code >= 500 and attempt < 4:
wait = 2 ** attempt
print(f"Checkout HTTP {e.code}, retrying in {wait}s (attempt {attempt+1}/5)...")
time.sleep(wait)
continue
raise
except Exception as e:
last_err = e
if attempt < 4:
wait = 2 ** attempt
print(f"Checkout error: {e}, retrying in {wait}s (attempt {attempt+1}/5)...")
time.sleep(wait)
continue
raise
else:
raise last_err
with tarfile.open(fileobj=io.BytesIO(archive), mode='r:gz') as tar:
root_prefix = tar.getmembers()[0].name.split('/', 1)[0] + '/'
for member in tar.getmembers():
name = member.name
if name == root_prefix[:-1]:
continue
if name.startswith(root_prefix):
member.name = name[len(root_prefix):]
if member.name:
tar.extract(member, '.')
PY
- name: Install SSH client
shell: sh
run: |
@@ -1127,16 +1081,10 @@ jobs:
key_path="$HOME/.ssh/xiaoxia_runtime_builder"
echo "Using key: $key_path (home key)"
elif [ -n "${PRODUCTION_SSH_KEY:-}" ]; then
key_path="$HOME/.ssh/production_deploy_key"
key_path="$HOME/.ssh/id_ed25519"
printf '%s\n' "$PRODUCTION_SSH_KEY" > "$key_path"
chmod 600 "$key_path"
echo "Using key from PRODUCTION_SSH_KEY secret"
elif [ -f "$HOME/.ssh/id_ed25519" ]; then
key_path="$HOME/.ssh/id_ed25519"
echo "Using key: $key_path (default id_ed25519)"
elif [ -f /root/.ssh/id_ed25519 ]; then
key_path="/root/.ssh/id_ed25519"
echo "Using key: $key_path (root id_ed25519)"
else
echo "ERROR: No SSH key available"
ls -la ~/.ssh/ 2>/dev/null || true
@@ -1175,7 +1123,7 @@ jobs:
production-e2e:
name: Production Browser E2E
runs-on: saas
runs-on: [host, build-only]
timeout-minutes: 15
if: startsWith(github.ref, 'refs/tags/v')
needs: deploy-production