mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-05-18 14:49:18 +00:00
97 lines
3.8 KiB
YAML
97 lines
3.8 KiB
YAML
name: 'SDK Python'
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- 'main'
|
|
- 'release/**'
|
|
paths:
|
|
- 'packages/sdk-python/**'
|
|
- '.github/workflows/sdk-python.yml'
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
- 'release/**'
|
|
paths:
|
|
- 'packages/sdk-python/**'
|
|
- '.github/workflows/sdk-python.yml'
|
|
|
|
jobs:
|
|
classify_pr:
|
|
name: 'Classify PR'
|
|
if: "${{ github.event_name == 'pull_request' }}"
|
|
runs-on: 'ubuntu-latest'
|
|
continue-on-error: true
|
|
outputs:
|
|
skip_ci: '${{ steps.release_sync.outputs.skip_ci }}'
|
|
steps:
|
|
- name: 'Detect release version-sync PR'
|
|
id: 'release_sync'
|
|
env:
|
|
# Repository variables can override these defaults if release naming
|
|
# or the CI bot account changes.
|
|
HEAD_REPO: "${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name || '' }}"
|
|
HEAD_REF: "${{ github.event_name == 'pull_request' && github.head_ref || '' }}"
|
|
PR_TITLE: "${{ github.event_name == 'pull_request' && github.event.pull_request.title || '' }}"
|
|
RELEASE_SYNC_HEAD_PREFIX: "${{ vars.RELEASE_SYNC_HEAD_PREFIX || 'release/' }}"
|
|
RELEASE_SYNC_TITLE_PREFIX: "${{ vars.RELEASE_SYNC_TITLE_PREFIX || 'chore(release):' }}"
|
|
RELEASE_SYNC_ACTOR: "${{ vars.RELEASE_SYNC_ACTOR || 'qwen-code-ci-bot' }}"
|
|
run: |-
|
|
skip_ci=false
|
|
repo_match=false
|
|
actor_match=false
|
|
head_match=false
|
|
title_match=false
|
|
[[ "${HEAD_REPO}" == "${GITHUB_REPOSITORY}" ]] && repo_match=true
|
|
[[ "${GITHUB_ACTOR}" == "${RELEASE_SYNC_ACTOR}" ]] && actor_match=true
|
|
[[ "${HEAD_REF}" == "${RELEASE_SYNC_HEAD_PREFIX}"* ]] && head_match=true
|
|
[[ "${PR_TITLE}" == "${RELEASE_SYNC_TITLE_PREFIX}"* ]] && title_match=true
|
|
|
|
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" &&
|
|
"${repo_match}" == "true" &&
|
|
"${actor_match}" == "true" &&
|
|
"${head_match}" == "true" &&
|
|
"${title_match}" == "true" ]]; then
|
|
skip_ci=true
|
|
echo "Release sync PR detected: actor=${GITHUB_ACTOR}, head_ref=${HEAD_REF}, title=${PR_TITLE}"
|
|
else
|
|
echo "Not a release sync PR: event=${GITHUB_EVENT_NAME}, actor=${GITHUB_ACTOR}, expected_actor=${RELEASE_SYNC_ACTOR}, repo_match=${repo_match}, head_match=${head_match}, title_match=${title_match}"
|
|
fi
|
|
|
|
echo "skip_ci=${skip_ci}" >> "${GITHUB_OUTPUT}"
|
|
echo "skip_ci=${skip_ci}"
|
|
|
|
sdk-python:
|
|
name: 'SDK Python (${{ matrix.python-version }})'
|
|
needs: 'classify_pr'
|
|
if: "${{ !cancelled() && needs.classify_pr.outputs.skip_ci != 'true' }}"
|
|
runs-on: 'ubuntu-latest'
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: ['3.10', '3.11', '3.12']
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: 'actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd' # v6.0.2
|
|
|
|
- name: 'Set up Python'
|
|
uses: 'actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405' # v6.2.0
|
|
with:
|
|
python-version: '${{ matrix.python-version }}'
|
|
|
|
- name: 'Install SDK test dependencies'
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install -e 'packages/sdk-python[dev]'
|
|
|
|
- name: 'Run Ruff'
|
|
run: 'python -m ruff check --config packages/sdk-python/pyproject.toml packages/sdk-python'
|
|
|
|
- name: 'Run Ruff Format'
|
|
run: 'python -m ruff format --check --config packages/sdk-python/pyproject.toml packages/sdk-python'
|
|
|
|
- name: 'Run Mypy'
|
|
run: 'python -m mypy --config-file packages/sdk-python/pyproject.toml packages/sdk-python/src'
|
|
|
|
- name: 'Run Pytest'
|
|
run: 'python -m pytest -c packages/sdk-python/pyproject.toml packages/sdk-python/tests -q'
|