mirror of
https://github.com/zyycn/codex-proxy-rs.git
synced 2026-11-06 08:06:19 +00:00
Share binary builds and dependency caches, run Windows platform checks in parallel, and reuse verified CI evidence for version-only releases. Reuse prebuilt CI image inputs and add read-only release preflight. Co-authored-by: Codex <noreply@openai.com>
115 lines
3.9 KiB
YAML
115 lines
3.9 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- 'release/version.yaml'
|
|
- 'release/notes.md'
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ci-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.head_ref || github.ref_name }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
changes:
|
|
runs-on: ubuntu-26.04
|
|
timeout-minutes: 5
|
|
permissions:
|
|
contents: read
|
|
pull-requests: read
|
|
outputs:
|
|
backend: ${{ steps.filter.outputs.backend }}
|
|
frontend: ${{ steps.filter.outputs.frontend }}
|
|
container: ${{ steps.filter.outputs.container }}
|
|
source_container: ${{ steps.filter.outputs.source_container }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
fetch-depth: 0
|
|
|
|
- name: Detect affected checks
|
|
id: filter
|
|
uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3
|
|
with:
|
|
# 目录规则取并集,再统一排除说明文档,保留隐藏配置
|
|
predicate-quantifier: some-with-excludes
|
|
filters: |
|
|
backend:
|
|
- '.github/scripts/toolchains.rb'
|
|
- 'deploy/Dockerfile'
|
|
- 'backend/**'
|
|
- 'release/version.yaml'
|
|
- '.github/workflows/ci.yml'
|
|
- '.github/workflows/_quality.yml'
|
|
- '!**/*.md'
|
|
frontend:
|
|
- '.github/scripts/toolchains.rb'
|
|
- 'backend/rust-toolchain.toml'
|
|
- 'deploy/Dockerfile'
|
|
- 'frontend/**'
|
|
- '.github/actions/build-frontend/**'
|
|
- '.github/workflows/ci.yml'
|
|
- '.github/workflows/_quality.yml'
|
|
- '!**/*.md'
|
|
container:
|
|
- 'backend/**'
|
|
- 'frontend/**'
|
|
- 'deploy/**'
|
|
- '.dockerignore'
|
|
- 'release/version.yaml'
|
|
- '.github/actions/verify-container/**'
|
|
- '.github/actions/build-binary/**'
|
|
- '.github/actions/build-frontend/**'
|
|
- '.github/scripts/toolchains.rb'
|
|
- '.github/scripts/package-release.rb'
|
|
- '.github/scripts/release-metadata.rb'
|
|
- '.github/workflows/_container.yml'
|
|
- '.github/workflows/ci.yml'
|
|
- '!**/*.md'
|
|
source_container:
|
|
- 'deploy/Dockerfile'
|
|
- 'deploy/Dockerfile.dockerignore'
|
|
- '.dockerignore'
|
|
- 'backend/**/Cargo.toml'
|
|
- 'backend/Cargo.lock'
|
|
- 'backend/rust-toolchain.toml'
|
|
- 'backend/**/build.rs'
|
|
- 'backend/.cargo/**'
|
|
- 'frontend/package.json'
|
|
- 'frontend/pnpm-lock.yaml'
|
|
- 'frontend/pnpm-workspace.yaml'
|
|
- 'frontend/.npmrc'
|
|
- 'frontend/patches/**'
|
|
- '.github/workflows/_container.yml'
|
|
- '.github/workflows/ci.yml'
|
|
|
|
quality:
|
|
needs: changes
|
|
uses: ./.github/workflows/_quality.yml
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
run_backend: ${{ needs.changes.outputs.backend == 'true' }}
|
|
# 预构建容器复用同一次前端检查产物,源码 Docker 构建仍独立验证
|
|
run_frontend: ${{ needs.changes.outputs.frontend == 'true' && (needs.changes.outputs.container != 'true' || needs.changes.outputs.source_container == 'true') }}
|
|
|
|
container:
|
|
needs: changes
|
|
if: needs.changes.outputs.container == 'true'
|
|
permissions:
|
|
contents: read
|
|
security-events: write
|
|
uses: ./.github/workflows/_container.yml
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
source_build: ${{ needs.changes.outputs.source_container == 'true' }}
|